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";
我想您可以轻松地调整它以满足您的需要,而无需用勺子喂食。
在我的 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";
我想您可以轻松地调整它以满足您的需要,而无需用勺子喂食。