前提・実現したいこと
現在、unity上でライフゲームのシミュレータを作成しており、その中で下記のコードに示すcellにアタッチしてあるcellControllerをGetComponentにて参照しようとしているのですが、なぜかInsrantiateで生成したGameObject内にアタッチされてないことになってしまい、参照元がnullとなってしまいます。
該当箇所をコメントアウトしたのち動かしてみるとunity上ではスクリプトがアタッチしてあることになっているので余計に混乱しています。
発生している問題・エラーメッセージ
NullReferenceException: Object reference not set to an instance of an object GameManager.Start () (at Assets/Scripts/GameManager.cs:33)
VisualStudioのデバッグモードでGameObject o や prefub cell の中身を確認しましたが、cellControllerはいませんでした。
プレハブのインスペクター内にいることは確認済みです。
該当のソースコード
C#
1public class GameManager : MonoBehaviour 2{ 3 public GameObject cell; 4 private Vector3 cellPos; 5 private CellController[,] cells; 6 7 private bool startCell = false; 8 void Start() 9 { 10 cellPos = new Vector3(-19.5f, 19.5f); 11 for(int i = 0; i < 40; i++) 12 { 13 cellPos.y = 19.5f; 14 for(int j = 0; j < 40; j++) 15 { 16 GameObject o = Instantiate(cell, cellPos, Quaternion.identity); 17 o.name = "cell" + i.ToString() + "_" + j.ToString(); 18 //この箇所がエラーをはいています 19 cells[i, j] = o.GetComponent<CellController>(); 20 // 21 cellPos.y -= 1.0f; 22 } 23 24 cellPos.x += 1.0f; 25 26 } 27 } 28}
試したこと
GameObject O に対してインスタンス化してすぐにコンポーネントを取得しようとしたためエラーをはいたのではと考え、すべて終えたのち再びタグからGameObjectを取得し、そこからcellControllerを取り出そうとしましたがこちらでもダメでした。
補足情報(FW/ツールのバージョンなど)
Unity 2018.4.23f1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/20 16:07 編集
2020/07/20 16:07
2020/07/20 16:29
2020/07/20 16:32
2020/07/20 16:39 編集