2016-07-13 2 views
0

Недавно я решил изучить программирование в Unity с помощью C#. Я столкнулся с этой неприятной проблемой, и я понятия не имею, как ее исправить. В значительной степени, когда я называю «instanceGo.GetComponent», он возвращает null. Я понятия не имею, что делать. Любые идеи помогут!UNITY C# GetComponent Возвращает Null

КОД

// Update is called once per frame 
void Update() { 
    if (Input.GetKey ("p")) { 
     printMessage = !printMessage; 
    } 
    if (instanceGo.GetComponent<SpawnZombiesHandler>() == null) { 
     print ("1"); 
    } else { 
     print ("2"); 
    } 
    foreach(GameObject bullet in instanceGo.GetComponent<ArcherBulletShootHandler>().getBullets()){ 
     print ("12"); 
     foreach (GameObject zombie in instanceGo.GetComponent<SpawnZombiesHandler>().getZombies()) { 
      hit (bullet, zombie); 
      if(Mathf.RoundToInt(zombie.transform.position.y) == Mathf.RoundToInt(bullet.transform.position.y) && 
       Mathf.RoundToInt(zombie.transform.position.x) == Mathf.RoundToInt(bullet.transform.position.x)) { 
        print("HIT!"); 
       } 
     } 
    } 
} 

ПРИМЕЧАНИЕ Это ДЕЙСТВИТЕЛЬНО печать "1". Скажите, если вам нужно больше кода.

спасибо.

+0

Обратите внимание, что 'C#' и 'C' - совершенно разные языки. – kaylum

+0

@kaylum Это C# – Nicster15

+0

Я знаю, что это 'C#'. Но у вас первоначально был тег 'C', который кто-то любезно удалил для вас. – kaylum

ответ

0

Убедитесь, что instanceGo на самом деле подключил компонент, который вы хотите.

+0

Не могли бы вы пояснить? – Nicster15

+1

Когда вы выбираете какой-либо объект, вы можете увидеть на вкладке «Инспектор» все компоненты, которые он подключил. Убедитесь, что у экземпляраGo есть необходимый компонент (например, SpawnZombiesHandler). –

0

Проверьте, есть ли компонент, названный SpawnZombiesHandler, прикрепленный к экземпляруGo и что у вас есть заглавные буквы в правильных местах.

Смежные вопросы