Unity 5 更改使用 UnityScript 创建的按钮文本

Unity 5 change button text created with UnityScript

在我的 2D 项目中,我在代码中创建了一个 canvas 和一个按钮。我想在代码中设置按钮的文本,但经过多次尝试我似乎做不到。

我的 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 () (位于 Assets/GameLogicLogin.js:11)“

--------------------------------编辑------------ --------------------------

生成的层次结构如下所示:http://puu.sh/iMYe6/4f4a8f545c.png 底部左侧是我link脚本的预制件。

以下行不会导致错误并且似乎更改了文本,但更改不会显示在游戏中,也不会显示预制件中分配给 "Text" 的原始文本。

instance.GetComponentInChildren(UnityEngine.UI.Text).text = "login";

您正在实例化 UnityEngine.UI.Button,它没有 UnityEngine.UI.Text 的组件,因此出现错误。

您实例化该对象有什么原因吗?

如果您在编辑器中将一个游戏对象链接到 loginButton,我认为您是,您应该这样做:

var comps = loginButton.gameObject.GetComponentsInChildren(UnityEngine.UI.Text);
comps[0].text = "login";

如果您想在 unity 编辑器中构建按钮,您可以像这样轻松地在脚本中更改其文本:

var button = GameObject.Find("buttonObjectName").GetComponent<Button>();
button.GetComponentInChildren<Text>().text = "What ever you like";

我想您可以轻松地调整它以满足您的需要,而无需用勺子喂食。