Menu
CoddyTech

Canvas e testo

Fa parte della sezione Creare veri giochi del percorso Unity di Coddy. Lezione 1 di 60.

Unity disegna il testo sullo schermo, i pulsanti e le barre con il suo sistema UI. In Unity 6, GameObject > UI > Text - TextMeshPro aggiunge un oggetto di testo chiamato Text (TMP); la prima volta, Unity chiede di importare TMP Essentials, necessari al testo per il suo font. Se nella scena non c'è ancora una Canvas, Unity ne crea una e vi inserisce il testo, oltre a un EventSystem, attraverso il quale passano i clic sull'interfaccia UI. La Canvas disegna i suoi elementi figli sopra l'immagine della telecamera, in una posizione fissa sullo schermo, ovunque guardi la telecamera. Imposta il suo Canvas Scaler su Scale With Screen Size, 1920 x 1080, Match 0.5, come in ogni scena di questo corso: il layout mantiene così le sue proporzioni con qualsiasi dimensione dello schermo.

Il componente del testo è TextMeshPro - Text (UI). Gli script lo memorizzano in un campo del tipo base TMP_Text, appartenente allo spazio dei nomi TMPro, e modificano ciò che mostra tramite la sua proprietà text, una stringa. Questo script assegna il nome al livello all'avvio:

using UnityEngine;
using TMPro;

public class LevelIntro : MonoBehaviour
{
    public TMP_Text titleText;

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

Trascina l'oggetto Text (TMP) dalla Hierarchy allo slot Title Text nell'Inspector e Unity inserirà il suo componente di testo nel campo. Senza using TMPro;, il nome TMP_Text è sconosciuto e lo script non viene compilato (CS0246). Se lasci lo slot vuoto, il primo titleText.text genera un'UnassignedReferenceException. Ciò che lo script scrive sostituisce il testo inserito in Text Input nell'Inspector, che per un nuovo testo è New Text.

challenge icon

Sfida

Facile

Mostra in ZoneText, in alto, in quale zona si trova l’esploratore.

  1. In Explorer.cs, aggiungi using TMPro; e il campo public TMP_Text zoneText;. La scena collega ZoneText a quel nome.
  2. In Update(), sotto il commento, imposta zoneText.text su Zone: Beach mentre transform.position.x è minore di 2 e su Zone: Jungle altrimenti.

Premi «Gioca» e cammina verso destra fino a raggiungere l’erba: il testo diventa Jungle. Poi premi «Verifica».

Provalo tu

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

        // Mostra la zona in ZoneText: Zona: Spiaggia per x inferiore a 2, Zona: Giungla da 2 in poi
    }
}

Tutte le lezioni di Creare veri giochi

Esercitati da solo: Playground Unity