2016-08-11 22 views
0

最近、私はゲームを作成しており、メニューを作成しています。 プレイヤーは最初にメニューを開き、UIテキストフィールドに名前を入力します。これをストリングに変換して、ストーリーライン全体でその名前をプレイヤーに呼び出すことができます。入力値を文字列に変換

私はこのウェブサイト上の他のスクリプトに遭遇しました:

using UnityEngine; 
using UnityEngine.UI; 
using System.Collections; 

public class GUIFieldTest : MonoBehaviour { 

    public GameObject playerName; 

    public void Start() 
    { 
     var input = gameObject.GetComponent<InputField>(); 
     var se = new InputField.SubmitEvent(); 
     se.AddListener(SubmitName); 
     input.onEndEdit.AddListener(SubmitName); 

     //or simply use the line below, 
     //input.onEndEdit = se; // This also works 
    } 

    private void SubmitName(string arg0) 
    { 
     Debug.Log(arg0); 
    } 
} 

私はゲームオブジェクトとしてテキストフィールドのプレハブを含めることができますので、私はこのコードを微調整している、しかし私はというエラーを受け取っています

とNullReferenceException:(資産/スクリプト/ GUIFieldTest.csで:13) オブジェクトGUIFieldTest.Start(のインスタンスに設定されていないオブジェクト参照)

このエラーは何も割り当てられていないことを意味し、NullReferenceExceptionを修正する方法を理解しています。私はゲームを動かすことができますが、ゲームはフリーズし、テキストフィールドはクリックできません。テキストは入力できません。

私はこれが非常に単純な質問であることを知っていますが、説明のためには素晴らしいでしょう。あなたがgameObject.GetComponentを使用する場合

+1

私はUnityに精通していませんが、 'NullReferenceException'は' Null'というobjecのメンバーにアクセスしようとしていることを知っています –

答えて

0

var input = gameObject.GetComponent<InputField>()

var input = playerName.GetComponent<InputField>(). 

する必要があり、それが唯一のスクリプトが接続されているゲームオブジェクト上のコンポーネントがあります。

私はあなたのInputField GameOBjectがplayerNameの変数であると仮定します。

これが真でない場合は、var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>()を実行してください。

+1

@Programmerありがとうございます。凍結解除! –

関連する問題