[英]Unity GUIText on Collision c#
我正在用C#编写3D迷宫程序,我需要让UI文本显示为“ You Win!”。 当玩家到达迷宫尽头时。
我在Unity中将触发器设置为一个名为FinishLine的多维数据集,并且将UI文本命名为winText
我在这条线上出现错误。
GUI.Box(新矩形(10,10,100,90),winText);
错误是“ Unityengine.gui.box(unityEngine rect,字符串)的最佳重载方法matfch”具有一些无效的参数
我也不知道这些数字是多少(10,10,100,90),所以也许这搞砸了吗? 这些值表示什么?
这是我的代码。
public class TextTrigger : MonoBehaviour {
public GUIText winText;
private bool FinishLine = false;
void Start () {
FinishLine = false;
}
void OnTriggerEnter(Collider col){
if (col.tag == "Player") {
FinishLine = true;
}
}
void OnGui() {
GUI.Box(new Rect(10,10,100,90), winText);
}
}
编辑-更新了我的代码,并且出现了新错误。 在第21行上说: “ UnityEngine.Texture不包含文本的定义,找不到可以接受类型为'UnityEngine.Texture'的第一个参数的扩展方法'text'。您是否缺少using指令或程序集引用?
新代码:
使用System.Collections; 使用System.Collections.Generic; 使用UnityEngine; 使用UnityEngine.UI;
公共类FinishLine:MonoBehaviour {
public Texture winText; private bool FinishPlane = false; // Use this for initialization void Start () { FinishPlane =
假;
} void OnTriggerEnter(Collider col) { if (col.tag == "Player") { FinishPlane = true; winText.text = "You Win!"; } } }
首先,它是OnGUI
而不是OnGui
。 拼写很重要。 如果您发现自己使用OnGUI
,请停止并找到其他方式来完成您的工作。
GUIText
是旧版UI组件。 它很旧,现在应该使用Text
组件。 如果仍要使用它,则下面是使用GUIText
的正确方法。
public GUIText winText;
private bool FinishLine = false;
void Start()
{
FinishLine = false;
}
void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
FinishLine = true;
winText.text = "You Win";
}
}
为此,应使用Text
组件,下面是如何使用Text
组件做到这一点:
public Text winText;
private bool FinishLine = false;
void Start()
{
FinishLine = false;
}
void OnTriggerEnter(Collider col)
{
if (col.tag == "Player")
{
FinishLine = true;
winText.text = "You Win";
}
}
您可以在此处了解有关Unity新UI的更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.