Unity GUIText на Столкновение C#

Я пишу программу 3D лабиринт на C#, и мне нужно, чтобы текст UI отображал "You Win!" Когда игрок достигает конца лабиринта.

У меня есть триггер, настроенный в Unity как куб с именем FinishLine, и у меня есть текст пользовательского интерфейса с именем winText

Я получаю сообщение об ошибке в этой строке..

GUI.Box (Новый прямоугольник (10,10,100,90), winText);

ошибка "лучший перегруженный метод matfch для unityengine.gui.box (unityEngine rect, string)" имеет недопустимые аргументы

Я также понятия не имею, что это за числа (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 ". Вы пропустили директиву using или ссылку на сборку?

НОВЫЙ КОД:

использование System.Collections; using 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!";      }   } }

1 ответ

Решение

Прежде всего, это OnGUI не OnGui, Правописание имеет значение. Если вы обнаружите, что используете OnGUI, остановись и найди другие способы достичь того, что ты делаешь.

GUIText является устаревшим компонентом пользовательского интерфейса. Это старый и 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 здесь.

Другие вопросы по тегам