2016-07-13 5 views
0

Ich habe vor kurzem beschlossen, die Programmierung in Unity mit C# zu untersuchen. Ich bin auf dieses böse Problem gestoßen und ich habe keine Ahnung, wie ich es beheben kann. Ziemlich viel, wenn ich "instanceGo.GetComponent" aufrufen, gibt es null zurück. Ich habe keine Ahnung, was ich tun soll. Irgendwelche Ideen würden helfen!UNITY C# GetComponent Rückgabe Null

CODE

// 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!"); 
       } 
     } 
    } 
} 

HINWEIS Es druckt "1". Sag mir, wenn du mehr Code sehen musst.

Vielen Dank.

+0

Beachten Sie, dass 'C#' und 'C' völlig verschiedene Sprachen sind. – kaylum

+0

@kaylum Das ist C# – Nicster15

+0

Ich weiß, es ist 'C#'. Aber Sie hatten ursprünglich das "C" -Tag, das jemand für Sie entfernt hat. – kaylum

Antwort

0

Vergewissern Sie sich, dass instanceGo die gewünschte Komponente tatsächlich angehängt hat.

+0

Haben Sie etwas dagegen, das zu klären? – Nicster15

+1

Wenn Sie ein Objekt auswählen, können Sie auf der Registerkarte "Informationen" alle Komponenten sehen, die es angehängt hat. Stellen Sie sicher, dass instanceGo die gewünschte Komponente hat (z. B. SpawnZombiesHandler). –

0

Überprüfen Sie, ob es eine Komponente namens SpawnZombiesHandler gibt, die an instanceGo angehängt ist und dass Sie an den richtigen Stellen Großbuchstaben erhalten haben.