2015-03-21 2 views
1

Я новичок в изучении разработки игр Unity3d, у меня есть один GameObject, так называемый GameManager, и GameManager.cs добавлен к нему. Как это:GetComponent Null

enter image description here

надреза из GameManager.cs, я получил нулевой исключение, когда я бегу:

public void DisplayTileGrid() { 

    tiles = new List<MatchItem>(); 

    for (int x = 0; x < TileData.tileWidth; x++) { 

     for (int y = 0; y < TileData.tileHeight; y++) { 

      int type = (int)cells[x, y].cellType; 

      string spriteName = sprites[type - 1]; 

      GameObject instance = NGUITools.AddChild(grid, matchItemPrefab) as GameObject; 

      instance.GetComponent<UISprite>().spriteName = spriteName; 

      instance.transform.localScale = Vector3.one * cellScale; 
      instance.transform.localPosition = new Vector3(x * cellWidth, y * -cellHeight, 0f); 

      MatchItem tile = instance.GetComponent<MatchItem>(); 

      tile.target = gameObject; 
      tile.cell = cells[x, y]; 
      tile.point = new TilePoint(x, y); 
      tiles.Add(tile); 
     } 
    } 
} 

Кажется, это не удалось добавить свой matchItemPrefab здесь:

GameObject instance = NGUITools.AddChild(grid, matchItemPrefab) as GameObject; 

, и instance.GetComponent() возвращен null.

Почему объект экземпляра не имеет MatchItem? Может ли кто-нибудь помочь?

ответ

1

Я считаю, что основной причиной является то, что я не добавлял MatchItem.cs в мой сборник, теперь исключение null исчезло.

+0

Просто будьте осторожны, с сохранением префатов, это немного странно в единстве. В некоторых случаях вам нужно использовать «Сохранить проект», чтобы действительно сохранить изменения с префава на диск. – d4Rk

+0

Если это был ответ, отметьте его как решенный, поэтому вопрос будет сделан! ;) –