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です。