Unity初心者です。長いこと調べながらいろいろ変えてみたりして、解決を試みましたが全く解決しそうにないので質問させていただきます。
InputFieldに入力されたテキストを変数に代入したいのですが、下記のソースコードを実行すると
NullReferenceException: Object reference not set to an instance of an object
code.ClickdecideButton ()
というエラーコードが出てしまいます。
ソースコード:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.SceneManagement; using UnityEngine.UI; public class code : MonoBehaviour { public string namae; public InputField input; public GameObject namaeran; public GameObject cv1; void Start() { namaeran = GameObject.Find("nametext"); cv1 = GameObject.Find("Canvas1"); } public void ClickdecideButton()//名前設定画面 { namae = input.text; SceneManager.LoadScene("導入",LoadSceneMode.Additive); cv1.SetActive(false); namaeran.GetComponent<Text>().text = namae; } }
補足:
・エラーが起きているのは
namae = input.GetComponent<InputField>().text;
の行みたいです。
・cv1は推移前のシーンのCanvasです。推移後と推移前の2つのシーンをロードした上で推移前のCanvasを非アクティブにすることでシーン推移をしています。(namae変数がシーン推移で消えるのを防ぐため)
・このエラーが出てるときはシーン推移も行われません。
・Buttonをクリックした際に、InputFieldのテキストを変数に入力し 、シーン推移も同時にしたいと思っています。
・空のオブジェクトにこのスクリプトをアタッチして、インスペクターのinputの項目にInputFieldオブジェクトをドラッグ&ドロップするという作業は行いました。
・複数シーンでnamae変数を使うために、Objectのアクティブ化、非アクティブ化を利用してシーン推移を行いたいという理由からInputFieldにGameObject.Find()は使えないという状況です。(非アクティブの時、Findできないため)
・推移前のシーンとスクリプトを入れたオブジェクトのインスペクターウインドウが載った画像です。
・推移後のシーンの画像です。
長い間苦しんでるので、これを機に解決出来たら本当にうれしいです。どうかご協力よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー