2016-07-13 15 views
0

私は最近、UnityでC#を使ってプログラミングを検討しました。私はこの厄介な問題に遭遇しましたが、私はそれをどのように修正するか考えていません。私が "instanceGo.GetComponent"と呼ぶとき、それはnullを返します。私は何をすべきか分かりません。どんなアイデアも助けになります!UNITY C#GetComponent Returns 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!"); 
       } 
     } 
    } 
} 

NOTEそれがない印刷 "1"。もうコードを見る必要があるかどうか教えてください。

ありがとうございます。

+0

'C#'と 'C'は全く異なる言語です。 – kaylum

+0

@kaylumこれはC# – Nicster15

+0

です。私はそれが 'C#'であることを知っています。しかし、もともとは、誰かが親切にあなたのために削除した 'C'タグを持っていました。 – kaylum

答えて

0

instanceGoに実際に必要なコンポーネントが接続されていることを確認してください。

+0

明確にしてもよろしいですか? – Nicster15

+1

オブジェクトを選択すると、「インスペクタ」タブに、そのオブジェクトがアタッチしているすべてのコンポーネントが表示されます。 instanceGoに必要なコンポーネントがあることを確認します(例:SpawnZombiesHandler)。 –

0

インスタンスゴーにアタッチされたSpawnZombiesHandlerというコンポーネントがあり、正しい場所に大文字を入れているかどうかを確認してください。