Menu
CoddyTech

Liste nell'Inspector

Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 16 di 50.

Un elenco di voci [System.Serializable] è una tabella che compili nell'Inspector. Questa guardia percorre un itinerario di fermate e si ferma a ciascuna per il tempo indicato dalla sua voce:

[System.Serializable]
public class Stop
{
    public Transform point;
    public float wait = 1f;
}

public class Patrol : MonoBehaviour
{
    public float speed = 3f;
    public List<Stop> stops;
    private int current;
    private float waited;

    void Update()
    {
        Stop stop = stops[current];
        transform.position = Vector3.MoveTowards(transform.position, stop.point.position, speed * Time.deltaTime);
        if (transform.position != stop.point.position) return;
        waited += Time.deltaTime;
        if (waited >= stop.wait)
        {
            waited = 0f;
            current = (current + 1) % stops.Count;
        }
    }
}

Nell'Inspector, Stops mostra il numero di elementi e una sezione espandibile per ogni voce: Element 0, Element 1 e così via, ciascuna con un Point e un Wait. Il pulsante + aggiunge una voce, il pulsante meno rimuove quella selezionata e la maniglia a sinistra di una riga permette di trascinarla in un'altra posizione nell'itinerario. Il codice legge l'elenco come al solito: stops.Count voci, stops[current].point e (current + 1) % stops.Count riportano alla prima fermata dopo l'ultima. Chi progetta i livelli può assegnare a una guardia tre fermate e a un'altra dieci senza modificare lo script.

Un array, public Stop[] stops;, viene mostrato allo stesso modo. Il pulsante + di Unity copia l'ultima voce, quindi una nuova fermata inizia con lo stesso point e wait di quella sopra. Unity non mostra né salva un elenco di elenchi, come List<List<Stop>>, o un Dictionary. Invece, racchiudi l'elenco interno in una classe [Serializable], come Route con il proprio List<Stop>, e crea un elenco di queste classi.

challenge icon

Sfida

Facile

Mira e Tom sono bloccati davanti a un ponte rotto. Scrivi la casella di dialogo in Dialogue.cs, sull'HUD. La scena collega box, speakerText e lineText, e ha già pronta la conversazione per una lista chiamata lines.

  • Dichiara una classe Line con due stringhe pubbliche, speaker e text, visibili nell'Inspector, e assegna a Dialogue una List<Line> pubblica chiamata lines.
  • All'inizio la casella mostra la prima riga: il suo interlocutore in speakerText e il suo testo in lineText.
  • Ogni pressione della barra spaziatrice mostra la riga successiva. Una conversazione può avere un numero qualsiasi di righe, quindi usa il conteggio della lista.
  • Premendo la barra spaziatrice sull'ultima riga, la casella si nasconde e viene registrato Dialogue over. Dopodiché, premere la barra spaziatrice non fa nulla.

Premi Gioca, leggi la conversazione con la barra spaziatrice, poi premi Verifica.

Provalo tu

using UnityEngine;
using TMPro;

public class Dialogue : MonoBehaviour
{
    public GameObject box;
    public TMP_Text speakerText;
    public TMP_Text lineText;

    void Start()
    {
        // mostra la prima battuta
    }

    void Update()
    {
        // Space: la battuta successiva o la fine della conversazione
    }
}
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 Architettura dei giochi in Unity