Unity GUIText 碰撞 C#

2023-12-10

我正在用 C# 编写一个 3D 迷宫程序,我需要让 UI 文本显示“你赢了!”当玩家到达迷宫的尽头时。

我在 Unity 中设置了一个名为 FinishLine 的立方体触发器,并且有名为 winText 的 UI 文本

我在这条线上遇到错误..

GUI.Box(新矩形(10,10,100,90),winText);

错误是“unityengine.gui.box (unityEngine rect, string) 的最佳重载方法 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.Generic;使用 统一引擎;使用UnityEngine.UI;

公共类FinishLine:MonoBehaviour {

public Texture winText;     private bool FinishPlane = false;

// Use this for initialization  void Start () {         FinishPlane =

false;

}

void OnTriggerEnter(Collider col)   {       if (col.tag == "Player") {
        FinishPlane = true;             winText.text = "You Win!";      }   } }

首先,它是OnGUI not 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 的更多信息here.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity GUIText 碰撞 C# 的相关文章

随机推荐