前提・実現したいこと
下記Scriptの実行方法をご教授願います。
発生している問題・エラーメッセージ
NullReferenceException
該当のソースコード
C#
1// ソースコード(1) 2// イベントを発行する側 3using System.Collections; 4using UnityEngine; 5 6// 10秒からカウントダウンをして値を通知する 7public class TimeCounter : MonoBehaviour 8{ 9 // イベントハンドラ 10 public delegate void TimerEventHandler(int time); 11 12 /// イベント 13 public event TimerEventHandler OnTimeChanged; 14 15 16 void Start() 17 { 18 StartCoroutine(TimerCoroutine()); 19 } 20 21 IEnumerator TimerCoroutine() 22 { 23 //10からカウントダウン 24 var time = 10; 25 while (time > 0) 26 { 27 time--; 28 //イベント通知 29 OnTimeChanged(time); 30 31 //1秒待つ 32 yield return new WaitForSeconds(1); 33 } 34 } 35}
C#
1// ソースコード(2) 2// イベントを受け取る側 3using UnityEngine; 4using UnityEngine.UI; 5 6public class TimerView : MonoBehaviour 7{ 8 // インスタンスはインスペクタビューから設定 9 [SerializeField] private TimeCounter timeCounter; 10 [SerializeField] private Text counterText; //uGUIのText 11 12 void Start() 13 { 14 //イベントを受けてuGUI Textを更新する 15 timeCounter.OnTimeChanged += time => 16 { 17 //現在のタイマ値をUIに反映する 18 counterText.text = time.ToString(); 19 }; 20 } 21}
試したこと
(1)空のゲームオブジェクトを作成し、ソースコード(1)をアタッチ
(2)さらに空のゲームオブジェクトを作成し、ソースコード(2)をアタッチ
(3)ヒエラルキービューからUI textを作成( Create → UI → text )
(4) (2)で作成したオブジェクトのSerializeFieldにインスペクタービューから(1)のオブジェクトと(3)のtextを接続
上記手順を踏んで実行した結果、NullReferenceExceptionが発生してしまい、意図した挙動となりませんでした。
補足情報(FW/ツールのバージョンなど)
Unity 2017.4.0f1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/24 08:09
2018/04/24 08:14
2018/04/24 08:44
2018/04/24 13:31 編集