🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

2780閲覧

unityでMissingReferenceExceptionのエラーが出るようになった

daichan0108

総合スコア0

C#

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

UI

UIはUser Interfaceの略であり、人間がコンピュータとやりとりをするためのシステムです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2021/01/02 16:28

編集2021/01/03 14:15

inputfieldで入力した文字を使おうとしたらエラーが出てしまうようになりました。
このエラーが発生するのは「oncla」のシーンを開いた時です。
ちなみにonclaのシーンを作る前はエラーは出ていませんでした。ただ、エラーが出てから色々いじったのでonclaのシーンが原因かはわかりません。

発生している問題・エラーメッセージ

エラーメッセージ MissingReferenceException: The object of type 'InputField' has been destroyed but you are still trying to access it. Your script should either check if it is null or you should not destroy the object. UnityEngine.Component.GetComponent[T] () (at C:/buildslave/unity/build/Runtime/Export/Component.bindings.cs:42) ticktock.Update () (at Assets/ticktock.cs:27)

該当のソースコード

C#

1コード 2using System.Collections; 3using System.Collections.Generic; 4using UnityEngine; 5using System; 6using UnityEngine.UI; 7using UnityEngine.SceneManagement; 8public class ticktock : MonoBehaviour 9{ 10 public AudioSource audiosourse; 11 //AudioSourceを取り入れる 12 public AudioClip Ban1; 13 public AudioClip punchshot; 14 public AudioClip impact; 15 //AudioClipで音を取り入れる 16 public InputField nanpun; 17 public InputField nanji; 18 public InputField setteibanngou; 19 //InputField~で入力を取り入れる 20 void Start() 21 { 22 audiosourse = gameObject.GetComponent<AudioSource>(); 23 //AudioSource(音の出るとこ)を取得 24 DontDestroyOnLoad(audiosourse); 25 } 26 public void Update() 27 { 28 nanji = nanji.GetComponent<InputField>(); 29 //変数内に書いた「時間」を格納 30 nanpun = GameObject.Find("nanpun").GetComponent<InputField>(); 31 //変数内に書いた「分」を格納 32 setteibanngou = GameObject.Find("setteibanngou").GetComponent<InputField>(); 33 DateTime dt = DateTime.Now; 34 string kakiji = nanji.text; 35 string kakifun = nanpun.text; 36 string nowji = dt.ToString("HH"); 37 string nowfun = dt.ToString("mm"); 38 string nowbyou = dt.ToString("ss"); 39 bool ji = kakiji == nowji; 40 bool fun = kakifun == nowfun; 41 string bangou = setteibanngou.text; 42 if ((fun == true) && (ji == true) && (nowbyou == "00")&&(dt.Millisecond<=100)&&(bangou=="1")) 43 { 44 Debug.Log("オールOK1"); 45 audiosourse.clip = Ban1; 46 audiosourse.PlayOneShot(Ban1); 47 SceneManager.LoadScene("oncla"); 48 } 49 else if ((fun == true) && (ji == true) && (nowbyou == "00") && (dt.Millisecond <= 100) && (bangou == "2")) 50 { 51 Debug.Log("OK2"); 52 audiosourse.clip = punchshot; 53 audiosourse.PlayOneShot(punchshot); 54 SceneManager.LoadScene("oncla"); 55 } 56 else if ((fun == true) && (ji == true) && (nowbyou == "00") && (dt.Millisecond <= 100) && (bangou == "3")) 57 { 58 Debug.Log("OK3"); 59 audiosourse.clip = impact; 60 audiosourse.PlayOneShot(impact); 61 SceneManager.LoadScene("oncla"); 62 } 63 else if ((fun == true) && (ji == true) && (nowbyou == "00") && (dt.Millisecond <= 100) && (bangou == "1")) 64 { 65 Debug.Log("オールOK1"); 66 audiosourse.clip = Ban1; 67 audiosourse.PlayOneShot(Ban1); 68 69 } 70 else if ((fun == true) && (ji == true) && (nowbyou == "00") && (dt.Millisecond <= 100) && (bangou == "2")) 71 { 72 Debug.Log("OK2"); 73 audiosourse.clip = punchshot; 74 audiosourse.PlayOneShot(punchshot); 75 76 } 77 else if ((fun == true) && (ji == true) && (nowbyou == "00") && (dt.Millisecond <= 100) && (bangou == "3")) 78 { 79 Debug.Log("OK3"); 80 audiosourse.clip = impact; 81 audiosourse.PlayOneShot(impact); 82 83 } 84 } 85 86 87 88 // Update is called once per frame 89 90}

試したこと

nanji = nanji.GetComponent<InputField>();の部分を
nanpun = GameObject.Find("nanpun").GetComponent<InputField>();と同じようなFindを使う形からunity側で指定するように変えた。

補足情報(FW/ツールのバージョンなど)

unityのバージョンは2018.4.2.3.f1です。

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

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

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

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

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

y_waiwai

2021/01/02 20:45

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
daichan0108

2021/01/03 13:58

分かりにくくてすいません。使うのが初めてで。おそらく言われた通りコードを枠の中に入れられたと思います。
guest

回答1

0

google翻訳
MissingReferenceException:タイプ 'InputField'のオブジェクトは破棄されましたが、まだアクセスしようとしています。
スクリプトは、それがnullであるかどうかを確認するか、オブジェクトを破棄しないでください。

と、おっしゃってますよ

投稿2021/01/02 20:47

y_waiwai

総合スコア88038

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問