Menu
CoddyTech

Canvas e testo

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

Unity disegna il testo sullo schermo, i pulsanti e le barre usando 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 la scena non ha ancora un Canvas, Unity ne crea uno e vi inserisce il testo, oltre a un EventSystem attraverso cui passano i clic sulla UI. Il Canvas disegna i suoi elementi figli sopra l'immagine della telecamera, in una posizione fissa sullo schermo, ovunque sia rivolta la telecamera. Imposta Canvas Scaler su Scale With Screen Size, 1920 x 1080, Match 0.5, come in ogni scena di questo corso, così il layout mantiene le sue proporzioni su qualsiasi dimensione dello schermo.

Il componente del testo è TextMeshPro - Text (UI). Gli script lo conservano in un campo del suo tipo base TMP_Text, dallo spazio dei nomi TMPro, e modificano ciò che mostra tramite la sua proprietà text, una stringa. Questo script assegna un 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 inserisce 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, la prima istruzione titleText.text genera 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

L'esploratore cammina sull'isola con le frecce sinistra e destra, come fa già Explorer.cs. Mostra dove si trova in ZoneText nella parte superiore dello schermo, dove compare ancora Nuovo testo:

  • Aggiungi using TMPro; e un campo pubblico di tipo TMP_Text chiamato zoneText. La scena collega ZoneText a un campo con quel nome esatto.
  • A ogni fotogramma, il testo indica Zone: Beach quando la coordinata x dell'esploratore è inferiore a 2, e Zone: Jungle da 2 in poi.

Premi Gioca, cammina sull'erba e torna indietro, 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: Zone: Beach per x < 2, Zone: Jungle da x = 2 in poi
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Creare veri giochi