2016-08-11 139 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.Start(的實例)(在資產/腳本/ GUIFieldTest.cs:13)

我明白,這個錯誤意味着沒有任何分配,我明白如何解決NullReferenceException。我能夠運行遊戲,但遊戲凍結,文本字段不可點擊。你不能輸入任何文字。

我知道這是一個非常簡單的問題,但它對解釋很有幫助。

+1

我對Unity不是很熟悉,但是我知道'NullReferenceException'意思是你試圖訪問一個對象'Null'上的成員。 –

回答

0

var input = gameObject.GetComponent<InputField>()應該

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

當您使用gameObject.GetComponent,只會找到遊戲對象的腳本被附加到組件。

我假設你的InputField GameOBject是playerName變量。

如果這不是真的做var input = GameObject.Find("YourInputFieldGameOBject").GetComponent<InputField>()

+1

非常感謝@Programmer,它完美的工作,並且遊戲已經未凍結! –

相關問題