質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

1245閲覧

Object reference not set to an instance of an objectになる原因が分からない.

akaevaka

総合スコア8

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/08/12 07:51

編集2021/08/12 11:04

###質問内容
元のコード全体を載せると長すぎてしまうので,抜粋したものを以下であげるのですが,

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ozwk

2021/08/12 08:06

「(nullになるはずがないのに) nullになるのはなぜか」という疑問かと思いますので、 なぜnullになっていないと考えているのかを追記してください
YAmaGNZ

2021/08/12 08:07

CDTEHはどこでセットしているのですか?
akaevaka

2021/08/12 11:01

>>>CDTEHはどこでセットしているのですか? public CustomDefaultTrackableEventHandler CDTEH; ではセットに当たらないのでしょうか
akaevaka

2021/08/12 11:02

>>>なぜnullになっていないと考えているのかを追記してください 関数の返り値があるのでNULLにはならないと考えました.
YAmaGNZ

2021/08/12 11:23

public CustomDefaultTrackableEventHandler CDTEH; これは変数の宣言であってインスペクタ上で設定していないのであれば値はセットされませんよ
akaevaka

2021/08/12 11:29

insoector上でセットするというのはどういうことでしょうか. まだ勉強し始めてから日が浅く,この設定するというのがどういうことかよくわかっておりません. コード上だけでは解決できないのでしょうか.
YAmaGNZ

2021/08/12 11:44

nullになっているのが不明とのことだったのでnullとなりうる点を指摘しただけとなります。 どうすれば思っている通りに動作するかについては私もわかりません。
guest

回答1

0

自己解決

unity上で
public CustomDefaultTrackableEventHandler CDTEH;
これは変数の宣言であってインスペクタ上で設定していないのであれば値はセットされませんよ
を行うことで問題なく実行できました

投稿2021/08/13 01:53

akaevaka

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問