Canvas und Text
Teil des Abschnitts Echte Spiele entwickeln der Unity-Journey von Coddy. Lektion 1 von 56.
Unity zeichnet mit seinem UI-System Bildschirmtext, Schaltflächen und Balken. In Unity 6 fügt GameObject > UI > Text - TextMeshPro ein Textobjekt namens Text (TMP) hinzu; beim ersten Mal fragt Unity, ob die TMP Essentials importiert werden sollen, die der Text für seine Schriftart benötigt. Falls die Szene noch kein Canvas hat, erstellt Unity eines und setzt den Text hinein, außerdem ein EventSystem, über das UI-Klicks verarbeitet werden. Das Canvas zeichnet seine untergeordneten Elemente über dem Kamerabild an einer festen Stelle auf dem Bildschirm, unabhängig davon, wohin die Kamera blickt. Stelle den Canvas Scaler wie in jeder Szene dieses Kurses auf Scale With Screen Size, 1920 x 1080, Match 0.5 ein, damit das Layout bei jeder Bildschirmgröße seine Proportionen beibehält.
Die Komponente des Textes heißt TextMeshPro - Text (UI). Skripte speichern sie in einem Feld ihres Basistyps TMP_Text aus dem Namespace TMPro und ändern über ihre Eigenschaft text, einen String, was sie anzeigt. Dieses Skript benennt das Level beim Start:
using UnityEngine;
using TMPro;
public class LevelIntro : MonoBehaviour
{
public TMP_Text titleText;
void Start()
{
titleText.text = "World 2: Ice Caves";
}
}Ziehe das Objekt Text (TMP) aus der Hierarchy in das Feld Title Text im Inspector, und Unity fügt dessen Textkomponente in das Feld ein. Ohne using TMPro; ist der Name TMP_Text unbekannt und das Skript lässt sich nicht kompilieren (CS0246). Wenn das Feld leer bleibt, löst der erste Zugriff auf titleText.text eine UnassignedReferenceException aus. Was das Skript schreibt, ersetzt den im Inspector eingegebenen Text Input, der bei einem neuen Textobjekt New Text lautet.
Aufgabe
EinfachDer Explorer läuft mit den Pfeiltasten nach links und rechts über die Insel, wie es Explorer.cs bereits tut. Zeige oben auf dem Bildschirm in ZoneText an, wo er sich befindet. Dort steht noch „Neuer Text:“:
- Füge
using TMPro;und ein öffentliches Feld vom TypTMP_Textmit dem NamenzoneTexthinzu. Die Szene verknüpft ZoneText mit einem Feld, das genau diesen Namen trägt. - In jedem Frame zeigt der Text
Zone: Beachan, solange die x-Koordinate des Explorers kleiner als 2 ist, und ab 2Zone: Jungle.
Drücke Spielen, laufe auf das Gras und wieder zurück, dann Überprüfen.
Probier es selbst
using UnityEngine;
public class Explorer : MonoBehaviour
{
public float speed = 4f;
void Update()
{
float move = Input.GetAxisRaw("Horizontal");
transform.Translate(move * speed * Time.deltaTime, 0f, 0f);
// Zeige in ZoneText die Zone an: Zone: Beach für x unter 2, Zone: Jungle ab 2
}
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Echte Spiele entwickeln
1Text auf dem Bildschirm
Canvas und TextPunktestand anzeigenZahlen formatierenEin Countdown-TimerRückblick: Tachometer4Szenen und Level
Eine Szene ladenDas Level neu startenNächstes LevelZwischen Szenen beibehaltenRückblick: Levelauswahl10Projekt: 3D-Plattformer
Der ParcoursBewegliche Plattformen2Buttons und Bildschirme
Buttons und onClickLambdasVerknüpfungen im InspectorPanels ein- und ausblendenGesundheitsbalkenRückblick: Upgrade-Shop5Speichern mit PlayerPrefs
Eine Zahl speichernMit einem Standardwert ladenHöchstpunktzahlEinstellungen speichernRückblick: Münzen auf der Bank