碰撞c#

时间:2017-02-27 04:37:02

标签: c# unity3d triggers collision guitext

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

我在Unity中将触发器设置为一个名为FinishLine的多维数据集,我有一个名为winText的UI文本

我在这一行收到错误..

GUI.Box(New rect(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不包含文本的定义,并且没有扩展方法'text'接受类型'UnityEngine.Texture'的第一个参数。你是否错过了使用指令或者装配参考?

新代码:

  
    

使用System.Collections;使用System.Collections.Generic;运用     UnityEngine;使用UnityEngine.UI;

         

public class 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!";      }   } }
  

1 个答案:

答案 0 :(得分:1)

首先,它是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的新用户界面here