在我的2D項目中,我在代碼中創建了一個畫布和一個按鈕。我想在代碼中設置按鈕的文本,但經過無數次嘗試後,我似乎無法做到這一點。使用UnityScript創建的Unity 5更改按鈕文本
我UnityScript代碼:
#pragma strict
var loginButton : UnityEngine.UI.Button;
function Start() {
var canvas = new GameObject ("canvas", Canvas);
var instance : UnityEngine.UI.Button = Instantiate(loginButton);
instance.GetComponent(UnityEngine.UI.Text).text = "login"; //Error below
instance.transform.position = Vector2(0,0);
instance.transform.SetParent(canvas.transform);
}
這提供了一個錯誤
「的NullReferenceException:對象沒有設置爲一個對象 GameLogicLogin.Start(的實例)(在資產/ GameLogicLogin.js: 11)「
--------------------------------編輯---------- -----------------------------
g頂層結構看起來像這樣:http://puu.sh/iMYe6/4f4a8f545c.png 底部左側是預製腳本I鏈接。
以下行不會導致錯誤,並且似乎會更改文本,但更改不會顯示在遊戲中,原始文本也不會分配給預製中的「文本」。
instance.GetComponentInChildren(UnityEngine.UI.Text).text = "login";
在編輯器中,我連接了一個按鈕預製件,該按鈕有一個文本元素作爲孩子。不應該在這種情況下的按鈕有一個UnityEngine.UI文本?我將該行更改爲「instance.GetComponentInChildren(UnityEngine.UI.Text).text =」login「;」它不會給出錯誤並記錄它說文本被改變了。儘管如此,它在遊戲中並沒有改變。 – Waltari
當您使用實例化時,您創建一個新的對象。這與您在預製中鏈接的不同。你應該沒有必要實例化。閱讀完您的層次結構後,我更新了答案。 –