Menu
CoddyTech

Canvas i tekst

Część sekcji Tworzenie prawdziwych gier ścieżki Unity w Coddy. Lekcja 1 z 60.

Unity rysuje tekst wyświetlany na ekranie, przyciski i paski za pomocą swojego systemu UI. W Unity 6 opcja GameObject > UI > Text - TextMeshPro dodaje obiekt tekstowy o nazwie Text (TMP); za pierwszym razem Unity prosi o zaimportowanie TMP Essentials, które są potrzebne tekstowi do obsługi czcionki. Jeśli w scenie nie ma jeszcze Canvas, Unity tworzy go i umieszcza w nim tekst, a także dodaje EventSystem, przez który przechodzą kliknięcia elementów UI. Canvas rysuje swoje obiekty podrzędne na obrazie z kamery, w stałym miejscu na ekranie, niezależnie od tego, gdzie patrzy kamera. Ustaw opcję Canvas Scaler na Scale With Screen Size, 1920 x 1080, Match 0.5, tak jak w każdej scenie w tym kursie, a układ zachowa proporcje na ekranach o dowolnym rozmiarze.

Komponentem tekstu jest TextMeshPro - Text (UI). Skrypty przechowują go w polu typu bazowego TMP_Text z przestrzeni nazw TMPro i zmieniają wyświetlaną treść za pomocą jego właściwości text, która jest ciągiem znaków. Ten skrypt ustawia nazwę poziomu po uruchomieniu:

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

    void Start()
    {
        titleText.text = "World 2: Ice Caves";
    }
}

Przeciągnij obiekt Text (TMP) z Hierarchy do pola Title Text w Inspectorze, a Unity umieści jego komponent tekstowy w tym polu. Bez using TMPro; nazwa TMP_Text jest nieznana i skrypt się nie kompiluje (CS0246). Jeśli pole pozostanie puste, pierwsze użycie titleText.text spowoduje wyjątek UnassignedReferenceException. Treść przypisana przez skrypt zastępuje tekst wpisany w polu Text Input w Inspectorze, którym w przypadku nowego tekstu jest New Text.

challenge icon

Wyzwanie

Łatwy

Pokaż u góry w ZoneText, w której strefie znajduje się odkrywca.

  1. W Explorer.cs dodaj using TMPro; i pole public TMP_Text zoneText;. Scena łączy ZoneText z tą nazwą.
  2. W Update(), poniżej komentarza, ustaw zoneText.text na Zone: Beach, gdy transform.position.x jest mniejsze niż 2, a w przeciwnym razie na Zone: Jungle.

Naciśnij „Graj” i przejdź w prawo na trawę: tekst zmieni się na Jungle. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

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);

        // Wyświetl strefę w ZoneText: Zone: Beach dla x poniżej 2, Zone: Jungle od 2 wzwyż
    }
}

Wszystkie lekcje w sekcji Tworzenie prawdziwych gier

Poćwicz samodzielnie: Edytor online Unity