Ich habe nach etwas gesucht, das einfach sein sollte, aber die Dokumentation zu Unity 5 ist ziemlich veraltet. Was ich erreichen möchte, ist, dass ich UI-Text vollständig aus dem Skript erstellen kann, dh vollständig dynamisch - in meiner realen Fallanwendung werde ich dies in einer Schleife von nicht vordefinierter Anzahl von Iterationen tun.
Eine Suche mit Google wird ziemlich viele Beispiele dafür finden, aber alles, was ich gesehen habe, verwendet entweder Methoden, die bereits veraltet sind (von vor Unity Version 5) oder einfach falsch sind (keine Überraschung hier ...). Ich weiß bereits, dass ich zuerst einen Canvas zu meinem Projekt hinzufügen sollte, dann using UnityEngine.UI
in meinen C # -Code aufnehmen sollte und dass ich auch einen UI-Text wie deklarieren könnte Text _guitext
.
Der folgende Code funktioniert jedoch nicht. Ich meine, es ist nicht so, dass es abstürzt, sondern dass nichts gezeigt wird:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class MyClass: MonoBehaviour {
Text _guitext;
// Use this for initialization
void Start () {
_guitext.text = "testing";
}
// Update is called once per frame
void Update () {
}
}
Schlimmer noch, es scheint, dass während des Spiels kein neues Objekt in der Objekthierarchieliste angezeigt wird.
Könnten Sie mich bitte hier in die richtige Richtung weisen? Vielen Dank.
Text' does not contain a definition for
text 'und keine Erweiterungsmethodetext' of type
Text' konnte gefunden werden (fehlt Ihnen eine using-Direktive oder eine Assembly-Referenz?)using UnityEngine.UI
am Anfang des Skripts anzugeben ?1 meinst du, du willst den uitext dynamisch ändern?
Wenn du es ändern willst, musst du zuerst dein Skript an gameobject anhängen. Binden Sie dann Ihre Variablen. Tutorials finden Sie hier
2 Wenn Sie uitext erstellen möchten, das sich zuvor nicht in der Hierarchie befindet.
Sie könnten GUI verwenden . GUI-Label
Fügen Sie die erstellten Instanzen in OnGUI ein. Es ist wie das Update, das jeder Frame genannt wird.
3 Die zweite Antwort erstellt kein Uitext-Objekt.
Aber es wird die gleichen Ergebnisse erzielen. Wenn Sie wirklich das uitext-Objekt anstelle der Effekte wollen. Sie können dies in einem Fertighaus tun und es zur Laufzeit initiieren. Der Uitext sollte jedoch ein Kind der Zeichenfläche sein.
quelle
Wenn Sie nach einer schnellen und schmutzigen Lösung für das Debuggen suchen, können Sie weiterhin die alte Unity 4-Lösung verwenden. Implementieren Sie das
OnGUI
Ereignis eines MonoBehavior, das Sie immer aktiv waren, um die GUI-Klasse aufzurufen und dem aktuellen Rendering-Frame ein UI-Element hinzuzufügen.Wenn Sie die Zeichenfläche verwenden möchten, müssen Sie der Zeichenfläche ein Skript hinzufügen, das:
GUIText
Spielobjekttransform
die Leinwand anquelle