Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach

Der 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 Typ TMP_Text mit dem Namen zoneText hinzu. Die Szene verknüpft ZoneText mit einem Feld, das genau diesen Namen trägt.
  • In jedem Frame zeigt der Text Zone: Beach an, solange die x-Koordinate des Explorers kleiner als 2 ist, und ab 2 Zone: 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
    }
}
quiz iconTeste dich selbst

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