繁体   English   中英

碰撞C#上的Unity GUIText

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM