前提・実現したいこと
野菜を箱に入れてポイントを稼ぐミニゲームを作成しようとしています。
tomatoをtomatoboxに入れる際にポイントが加算されるよう設定したいのですが、以下のエラーが出てしまいうまくいきません。
よろしければ解決法を教えていただきたいです。
エラーメッセージ
NullReferenceException: Object reference not set to an instance of an object tomatobox.OnTriggerEnter2D (UnityEngine.Collider2D other) (at Assets/SCRIPT/tomatobox.cs:17### using System.Collections; using System.Collections.Generic; using UnityEngine; 該当スクリプト↓ using System.Collections; using System.Collections.Generic; using UnityEngine; public class tomatobox : MonoBehaviour { GameObject director; void Start() { this.director = GameObject.Find("GameDirector");} void OnTriggerEnter2D(Collider2D other) { if (other.gameObject.tag == "tomato") { Destroy(other.gameObject); this.director.GetComponent<GameDirector>().Gettomato(); } } 参照先のGameDirectorのスクリプト↓ using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; public class GameDirector : MonoBehaviour { GameObject timerText; GameObject pointText; float time = 60.0f; int point = 0; public void Gettomato() { this.point += 100; } public void Getonion() { this.point += 100; } public void Getpiman() { this.point += 100; } public void Getnasu() { this.point += 100; } void Start() { this.timerText = GameObject.Find("Time"); this.pointText = GameObject.Find("Point"); } void Update() { this.time -= Time.deltaTime; this.timerText.GetComponent<Text>().text = this.time.ToString("F1"); this.pointText.GetComponent<Text>().text = this.point.ToString() + " point"; } } ```c# ソースコード ### 試したこと ・Findで呼び出しているオブジェクト"GameDirector"がシーンにあるかの確認 ・"GameDrector"の綴りはスクリプト内、オブジェクト名で一致しています。 ### 補足情報(FW/ツールのバージョンなど) エラー箇所 this.director.GetComponent<GameDirector>().Gettomato(); GameDirectorは残り時間とポイントを設定するスクリプトです。 tomatoをtomatoboxに入れた時(当たり判定が衝突した時)に100ポイントが入るようにしたいです。 4冊ぐらい参考書を抱えながら作っているド初心者のため拙い部分多々あるかと思います。 不足情報等あればご指摘願います。
・GameDirectorスクリプトがGameDirectorオブジェクトにアタッチされているか
・GameDirectorオブジェクトとtomatoboxをアタッチしているオブジェクトが同じシーンにあるか
の2点を確認してみてください。
ご連絡ありがとうございます。
上記2点確認いたしました。おそらく問題ないと思います。
作業スクリーンショットを本文に追加しましたので、お手数ですが念の為ご確認いただけますと幸いです...!
現時点で提示されている情報から分かる範囲では特に問題なさそうですが・・・。
tomatoboxに他の処理を書いていないのなら、あと考えられるとすればスクリプトの保存し忘れとかでしょうか。
先程ご指摘いただいた内容がどちらもアタッチ関連だったため、その辺りを中心に色々と触って確認していたところ、tomatoboxのInspecterビューで、スクリプトのチェックボックスにチェックがついていなかったことに気がつきました...!
とても初歩的な凡ミスで恐縮ですが、スクリプトの問題かと思い何時間も唸ってたので本当に助かりました。質問してよかったです、ありがとうございます。
解決済なら自己回答してベストアンサーを付け質問のクローズをお願いします。
回答1件
あなたの回答
tips
プレビュー