###質問内容
元のコード全体を載せると長すぎてしまうので,抜粋したものを以下であげるのですが,
C#
1if(CDTEH.SendFlag() > 0){
のところでObject reference not set to an instance of an object
というエラーが出てしまいます.
どうしてNULLになるのか分からないので教えていただきたいです.
このサイトを参考にしました.
リンク内容
###コード1
C#
1using UnityEngine; 2using UnityEngine.Events; 3using Vuforia; 4using UnityEngine.UI; 5using System.Collections.Generic; 6using System.Collections; 7using System; 8using System.Linq; 9using System.Text; 10using System.Threading.Tasks; 11using System.IO; 12 13public class CustomDefaultTrackableEventHandler : DefaultTrackableEventHandler { 14 private int lockon = 0; 15 //ターゲットを認識したときの処理 16 protected override void OnTrackingFound (){ 17 base.OnTrackingFound (); 18 OnTrackingAction.Invoke (); 19 //初期化 20 _text = LoadTextFile(textFile); 21 _pageQueue = SeparateString(_text, SEPARATE_PAGE); 22 ShowNextPage(); 23 lockon++; 24 Debug.Log(lockon); 25 } 26 public int SendFlag(){ 27 return lockon; 28 } 29 30} 31
###コード2
C#
1using UnityEngine; 2using UnityEngine.Events; 3using Vuforia; 4using UnityEngine.UI; 5using System.Collections.Generic; 6using System.Collections; 7using System; 8using System.Linq; 9using System.Text; 10using System.Threading.Tasks; 11using System.IO; 12 13public class CustomDefaultTrackableEventHandler2 : DefaultTrackableEventHandler { 14 public CustomDefaultTrackableEventHandler CDTEH; 15 16 private void Update(){ 17 //他のジャケットを認識したらこちら側のフラッグをおろす. 18 if(CDTEH.SendFlag() > 0){ 19 lockon = 0; 20 } 21 22 //曲の選択 23 if(lockon > 0){ 24 //if(flag == 0){ 25 if (Input.GetKey (KeyCode.Alpha1)){ 26 LylicsSetup(TimeTabletxt1, Lylics1); 27 nagamenosora.Play(); 28 } 29 else if (Input.GetKey (KeyCode.Alpha2)){ 30 LylicsSetup(TimeTabletxt2, Lylics2); 31 clover.Play(); 32 } 33 //} 34 35 36 if(flag > 0){ 37 timeElapsed += Time.deltaTime; 38 if(timeElapsed > TimeTable[part] && TimeTable[part] > 0){ 39 if (!ShowNextPage()){ 40 // UnityエディタのPlayモードを終了する 41 UnityEditor.EditorApplication.isPlaying = false; 42 } 43 part++; 44 } 45 } 46 47 //強制終了 48 if (Input.GetKey (KeyCode.Alpha9)){ 49 UnityEditor.EditorApplication.isPlaying = false; 50 } 51 52 //曲一覧の表示 53 if (Input.GetKey (KeyCode.Alpha0)){ 54 nagamenosora.Stop(); 55 clover.Stop(); 56 _text = LoadTextFile(textFile); 57 _pageQueue = SeparateString(_text, SEPARATE_PAGE); 58 ShowNextPage(); 59 flag = 0; 60 } 61 } 62 } 63 64
「(nullになるはずがないのに)
nullになるのはなぜか」という疑問かと思いますので、
なぜnullになっていないと考えているのかを追記してください
CDTEHはどこでセットしているのですか?
>>>CDTEHはどこでセットしているのですか?
public CustomDefaultTrackableEventHandler CDTEH;
ではセットに当たらないのでしょうか
>>>なぜnullになっていないと考えているのかを追記してください
関数の返り値があるのでNULLにはならないと考えました.
public CustomDefaultTrackableEventHandler CDTEH;
これは変数の宣言であってインスペクタ上で設定していないのであれば値はセットされませんよ
insoector上でセットするというのはどういうことでしょうか.
まだ勉強し始めてから日が浅く,この設定するというのがどういうことかよくわかっておりません.
コード上だけでは解決できないのでしょうか.
nullになっているのが不明とのことだったのでnullとなりうる点を指摘しただけとなります。
どうすれば思っている通りに動作するかについては私もわかりません。

回答1件
あなたの回答
tips
プレビュー