我正在开发一个从网站导入文本数据的C#类。这很好用。在我丢失它的地方是如何在字符串变量中包含所有文本后在Unity 4.6中显示文本。任何建议都表示赞赏。
答案 0 :(得分:4)
Unity 4.6 UI系统具有名为Text
的组件。您可以观看视频教程here。另外,我建议您查看API。
与往常一样,您有两种方法可以将此组件添加到游戏对象中。您可以从编辑器中执行此操作(只需单击要在层次结构中包含此组件的游戏对象并添加Text
组件)。或者您可以使用gameObject.AddComponent<Text>()
从脚本执行此操作。
如果您还不熟悉组件,建议您阅读此article。
无论如何,在您的脚本中,您需要在其顶部添加using UnityEngine.UI;
,因为Text
类位于UnityEngine.UI
命名空间中。好的,现在回到脚本,它将设置Text
组件的值。
首先,您需要引用Text
组件的变量。可以通过将其公开给编辑器来完成:
public class MyClass : MonoBehaviour {
public Text myText;
public void SetText(string text) {
myText.text = text;
}
}
在编辑器中将带有文本组件的gameObject附加到此值。
另一种选择:
public class MyClass : MonoBehaviour {
public void SetText(string text) {
// you can try to get this component
var myText = gameObject.GetComponent<Text>();
// but it can be null, so you might want to add it
if (myText == null) {
myText = gameObject.AddComponent<Text>();
}
myText.text = text;
}
}
以前的脚本不是一个好例子,因为GetComponent
实际上很贵。所以你可能想要缓存它的引用:
public class MyClass : MonoBehaviour {
Text myText;
public void SetText(string text) {
if (myText == null) {
// looks like we need to get it or add
myText = gameObject.GetComponent<Text>();
// and again it can be null
if (myText == null) {
myText = gameObject.AddComponent<Text>();
}
}
// now we can set the value
myText.text = text;
}
}
顺便说一下,'GetComponent或Add如果它还不存在'的模式是如此常见,通常在Unity中你想要定义函数
static public class MethodExtensionForMonoBehaviourTransform {
static public T GetOrAddComponent<T> (this Component child) where T: Component {
T result = child.GetComponent<T>();
if (result == null) {
result = child.gameObject.AddComponent<T>();
}
return result;
}
}
所以你可以用它作为:
public class MyClass : MonoBehaviour {
Text myText;
public void SetText(string text) {
if (myText == null) {
// looks like we need to get it or add
myText = gameObject.GetOrAddComponent<Text>();
}
// now we can set the value
myText.text = text;
}
}
答案 1 :(得分:2)
确保导入ui库 - using UnityEngine.UI
gameObject.GetComponent<Text>().text
- 将.text替换为UI文本的任何其他字段
答案 2 :(得分:0)
我认为问题是创建动态大小的&#34;文本框&#34;而不是仅仅将字符串分配给GUIText GameObject。 (如果不是 - 只需将GUIText GameObject放入场景中,通过脚本中的GUIText变量访问它,并在Start或Update中使用myGUIText.text = myString。)
如果我的假设是正确的,那么我认为你应该只使用GUI标签:
http://docs.unity3d.com/ScriptReference/GUI.Label.html
如果您需要将字符串拆分为将文本放入不同的标签或GUITexts,则需要使用substrings