Перейти вверху и удалить оператор импорта, если он есть, и повторно импортировать класс. Но если это не так, сделайте чистую сборку. Вы используете Netbeans или Eclipse?
Вам нужно найти GameObject, который содержит компонент скрипта, на который вы планируете получить ссылку. Убедитесь, что GameObject уже находится в сцене, или Find
вернет null
.
GameObject g = GameObject.Find("GameObject Name");
Затем вы можете схватить скрипт:
BombDrop bScript = g.GetComponent<BombDrop>();
Затем вы можете доступ к переменным и функциям скрипта.
bScript.foo();
Я только что понял, что на тот же день я ответил на очень похожий вопрос: Не знаю, как получить здоровье врага
Я немного расскажу о вашем вопросе, так как я уже ответил на это.
Что ваш код делает, так это: «Посмотрите в мой GameObject для BombDropScript
, большую часть времени сценарий не будет прикреплен к одному и тому же GameObject.
Также используйте setter и getter для maxBombs
.
public class BombDrop : MonoBehaviour
{
public void setMaxBombs(int amount)
{
maxBombs += amount;
}
public int getMaxBoms()
{
return maxBombs;
}
}
использовать его в начале вместо пробуждения и не использовать Destroy(gameObject);
, вы уничтожаете свой игровой объект, тогда вы хотите что-то от него
void Start () {
BombDropScript =gameObject.GetComponent<BombDrop> ();
collider = gameObject.GetComponent<BoxCollider2D> ();
// Call the Explode function after a few seconds
Invoke("Explode", time);
}
void Explode() {
//..
//..
//at last
Destroy(gameObject);
}
, если вы хотите получить доступ к скрипту в другом объекте gameObject назначить игровой объект через инспектор и получить доступ к нему, как это
public gameObject another;
void Start () {
BombDropScript =another.GetComponent<BombDrop> ();
}
Explode() { //.. //.. //at last Destroy(gameObject); }
– Milad Qasemi
24 October 2014 в 17:20
BombDrop
должен быть в сцене из-за кодаUpdate
, который создает бомбы. Также я понял, что вы можете написать свой код намного проще. Я уточню свой ответ. – FunctionR 24 October 2014 в 19:01