前提・実現したいこと
5×5のマスに色のついた箱を、各色の個数は一定で、場所をランダムにして出現させたいです。
そのために各色の箱を25個ずつ用意してあり、Red4などのように名前を振ってあります。
発生している問題・エラーメッセージ
以下のようなエラーが出てしまいます。52行目はコードに示してあります。
NullReferenceException: Object reference not set to an instance of an object Color.Start () (at Assets/Cscript/Color.cs:52)
該当のソースコード
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Color : MonoBehaviour { public GameObject Red; public GameObject Black; public GameObject Blue; public GameObject Gray; int start = 0; int end = 24; int count = 24; List<int> numbers = new List<int>(); void Start() { for (int i = start; i <= end; i++)///リストに挙げる { numbers.Add(i); } float k;float j;int l=0; for (k = 0;k< 5; k++){ for (j = 0; j < 5; j++) { Instantiate(Red, new Vector3(k, j, 0f), Quaternion.identity).name="Red"+l; GameObject.Find("Red" + l).SetActive(false); Instantiate(Black, new Vector3(k, j, 0f), Quaternion.identity).name = "Black" + l; GameObject.Find("Black" + l).SetActive(false); Instantiate(Blue, new Vector3(k, j, 0f), Quaternion.identity).name = "Blue" + l; GameObject.Find("Blue" + l).SetActive(false); Instantiate(Gray, new Vector3(k, j, 0f), Quaternion.identity).name = "Gray" + l; GameObject.Find("Gray" + l).SetActive(false); l++; } } while (count-- > 0) { Debug.Log("count"+count); int index = Random.Range(0, numbers.Count); int ransu = numbers[index]; if (count< 7) { Debug.Log(ransu); GameObject.Find("Red" + ransu).SetActive(true); }else if (count<15) { Debug.Log(ransu); GameObject.Find("Blue" + ransu).SetActive(true); }else if (count == 15) { Debug.Log(ransu); GameObject.Find("Black" + ransu).SetActive(true); } else { Debug.Log(ransu); GameObject.Find("Gray" + ransu).SetActive(true); <=====ここにエラーが出ています } numbers.RemoveAt(index); } } // Update is called once per frame void Update() { } }
試したこと
ゲームオブジェクトを探し出せていないということなので、ransuの部分を文字型にしたり、整数型にするなどしましたがエラーが出でしまいました。プレハブから生成した直後のfalseにする操作はうまくいっています。
また、エラー行の1行上にDebug.Log("Gray" + ransu)と入力するとUnityEngine.Debug:Log(Object)と帰ってきます。
どなたかご教授よろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。