###前提・実現したいこと
unityで、スクリプトを適用したオブジェクトAが一定の座標まで移動したらオブジェクトBが消え、同時に消えていたオブジェクトCが出現する、といったスクリプトを作っています。
オブジェクトCの有効化が上手く行かないので、質問させて頂きます。
よろしくお願いいたします。
###発生している問題・エラーメッセージ
11行目で、enptyのオブジェクト(box1)の下階層にあるsphere101の呼び出しがうまく行っていないようです。
NullReferenceException: Object reference not set to an instance of an object
###該当のソースコード
C#
1using UnityEngine; 2using System.Collections; 3public class mvcam_new3 : MonoBehaviour 4{ 5 public Vector3 pos = new Vector3(-11, 0, 0); 6 private GameObject game_object0 = null; 7 private GameObject game_object2 = null; 8 void Start() 9 { 10 game_object0 = GameObject.Find("Sphere100"); //オブジェクトB 11 game_object2 = GameObject.Find("Box1").transform.FindChild("Sphere101").gameObject; //オブジェクトC 12 } 13 void Update() 14 { 15 if (Input.GetKeyDown(KeyCode.Space) && pos.z < 300) 16 { //spaceキーの入力があり、かつx座標が300以下の場合にという条件文 17 pos.z += 30; //x座標を+30する(移動する) 18 transform.position = pos; //位置更新 19 print(transform.position.z); //コンソールを開くと座標が今どこにいるのかわかるのか書いてくれる 20 } 21 else if (Input.GetKeyDown(KeyCode.Space) && pos.z >= 300) 22 { 23 pos.z = 0; 24 transform.position = pos; 25 print(transform.position.z); 26 game_object0.SetActive(false); 27 game_object2.SetActive(true); 28 } 29 } 30}
###試したこと
フェードアウト、フェードインや透明度の変更など試してみたのですが適用できませんでした。
###補足情報(言語/FW/ツール等のバージョンなど)
unity version5.4.1f1
box1はsphere100と同階層なので参照できていると思います。
###改変後のscript
C#
1using UnityEngine; 2using System.Collections; 3 4public class mvcam_new3 : MonoBehaviour 5{ 6 public Vector3 pos = new Vector3(-11, 0, 0); 7 private GameObject game_object01 = null; 8 private GameObject game_object02 = null; 9 void Start() 10 { 11 game_object01 = GameObject.Find("Sphere100"); 12 game_object02 = Transform.Find("Box1/Sphere101"); 13 } 14 void Update() 15 { 16 if (Input.GetKeyDown(KeyCode.Space) && pos.z < 300) 17 { //spaceキーの入力があり、かつx座標が300以下の場合にという条件文 18 pos.z += 30; //x座標を+30する(移動する) 19 transform.position = pos; //位置更新 20 print(transform.position.z); //コンソールを開くと座標が今どこにいるのかわかるのか書いてくれる 21 } 22 else if (Input.GetKeyDown(KeyCode.Space) && pos.z >= 300) 23 { 24 pos.z = 0; 25 transform.position = pos; 26 print(transform.position.z); 27 game_object01.SetActive(false); 28 //game_object2.SetActive(true); 29 game_object02.transform.gameObject.SetActive(true); 30 } 31 } 32}
###改変で発生したエラー
error CS0120: An object reference is required to access non-static member `UnityEngine.Transform.Find(string)'