####<質問内容>
Unityでの音楽ゲーム制作についてお聞きしたいことがあります。
現在判定ラインにきたノーツに対し、判定ラインにセットした判定処理スクリプトでノーツをオフ/除去するスクリプトを組みたいのですが、インスタンス(Instantiateで作成したノーツ群とします)をスクリプトからオフにする/除去するための書き方がいまいちわかりません。今までコライダーを使用していたのですが、細かい判定処理やコライダーによる処理の鈍足化を防ぐためコライダーなしでの処理を組みたいと考え実行した矢先、今回の問題にぶつかりました。
###<試したこと>
public型のGameObjectに素となるノーツをあらかじめ代入し、FindやFindWithTagでそれにアクセスする流れを作りましたが、オブジェクトのオンオフ処理(SetActive)をする行にて以下のエラーで怒られてしまいました。同様に他オブジェクトのスクリプト内にある関数を呼び出すこともできません。
->NullReferenceException: Object reference not set to ab instance of object.
また判定処理の最後にDestroy((素となるノーツを入れたGameObject));という処理を足しましたが、これは反応しませんでした。
###<該当のスクリプト>
*関連しない部分はなるべくカットしています
C#
1void Start() 2 { 3 tes = Selectmode.mode; //曲を設定しています 4 sa = 0; 5 cx = 0; 6 timer = 0; 7 8 b = check.turnnum(); 9 to = aud.GetComponent<AudioSource>(); 10 11 des = GameObject.FindWithTag("T1"); //インスタンスのタグ(T1)を特定しようとしています 12 //desはpublic GameObject des;と宣言しました 13 14 sc = GameObject.Find("Score"); 15 GameObject sp = GameObject.Find("S"); 16 co = GameObject.Find("chainsuu"); 17 cm = GameObject.Find("conbo!"); 18 19 co.SetActive(false); 20 cm.SetActive(false); 21 22 dk = gameObject.GetComponent<AudioSource>(); 23 dk.clip = don; 24 } 25 26 // Update is called once per frame 27 void Update() 28 { 29 timer = to.GetComponent<AudioSource>().time; //曲開始からの時刻を入力 30 31 if (tes == 0) 32 { 33 notetim = goscript.seikaku[a]; //読み込まれた譜面データをこちらにも移動 34 noterean = goscript.rea[a]; 35 36 if (notetim-1.3f<=timer && notetim+1.4f>=timer) //判定処理 37 { 38 if (Input.GetKey(KeyCode.G) && noterean == 0) //レーン番号と対応したキーの入力 39 { 40 sa += 130; 41 cx += 1; 42 dk.Play(); //clipの音を再生 43 keij += 1; 44 } 45 //本来は他のレーンでの処理も書いています 46 47 Destroy(des); //ここでノーツのオンオフを行いたいです 48 } 49 }
使用環境 Unity2019.1.5f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/19 04:21