我正在努力创建一个使用Unity的应用,每次我尝试谷歌一个问题时,我会得到旧的答案或答案,这些答案或答案都不起作用。
我在团结等级中得到的是
Canvas >
Panel >
Text
SubPanela >
Button1
Button2
Text1
SubPanelb >
Button1
Button2
Text2
我需要通过单击其中一个按钮来访问和更改/替换Text 1和Text 2面板中的字符串。我从搜索结果中尝试的每种方法都失败了。
我想要做的是:如果你在SubPanela中按下Button1,它应该取Text1中的字符串,将其解析为int,然后递增它。同时,它应该将Text中的字符串解析为int并递减它。
我的问题是:如何访问文本中的字符串和Text1?
答案 0 :(得分:1)
您应该做的是在要更改文本的类中(或者单击按钮上调用的函数所在的位置)对Text元素进行公共引用。例如:
using UnityEngine.UI;
public class MyClass : MonoBehavior {
public Text MyTextField;
public void ButtonClicked() {
MyTextField.text = "random new text";
}
}
答案 1 :(得分:0)
正如mcjcloud的回答所说,不是存储对每个文本字段的引用,而是还可以导航场景层次结构。
假设此脚本附加到Canvas对象...
using UnityEngine;
using UnityEngine.UI;
public class MyClass : MonoBehavior {
public void ButtonClicked() {
Transform t = transform.GetChild(0); //Panel
Transform ta = t.FindChild("SubPanela");
Text txt1 = ta.FindChild("Text1").GetComponent<Text>();
Transform tb = t.FindChild("SubPanelb");
Text txt1 = ta.FindChild("Text2").GetComponent<Text>();
}
}
如果脚本附加到其中一个按钮,则可以使用transform.parent
向上导航。
您可以根据需要使用FindChild(...)
或GetChild(...)
。后者更快,但如果您的层次结构是可变的,那么FindChild将更加健壮。