Menu
CoddyTech

Collegare nell'Inspector

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

Un pulsante può essere collegato anche nell’Inspector, senza usare affatto AddListener. L’elenco On Click () del pulsante è inizialmente vuoto. Il pulsante + aggiunge una riga; trascina nella casella dell’oggetto della riga l’oggetto che contiene lo script, e il menu a discesa delle funzioni elenca i componenti di quell’oggetto, ciascuno con i propri metodi pubblici. Scegli Jukebox > NextTrack e a ogni clic viene chiamato questo metodo:

public class Jukebox : MonoBehaviour
{
    public string[] tracks;
    private int current;

    public void NextTrack()
    {
        current = (current + 1) % tracks.Length;
        Debug.Log("Now playing: " + tracks[current]);
    }
}

Il menu a discesa elenca i metodi che sono public, restituiscono void e non accettano parametri oppure ne accettano uno di tipo int, float, string, bool o Object, il cui valore imposti nella riga. Un metodo privato NextTrack non viene elencato, quindi non può essere selezionato. La riga memorizza il metodo tramite il suo nome: rinomina NextTrack in SkipTrack e nella riga comparirà <Missing Jukebox.NextTrack>; i clic non faranno nulla e non verrà visualizzato alcun errore nella Console.

Le righe nell’Inspector sono adatte ai pulsanti posizionati nella scena: chiunque faccia parte del team può vedere e modificare la funzione chiamata da un pulsante senza aprire uno script. AddListener nel codice è adatto ai pulsanti creati durante l’esecuzione del gioco e alle chiamate che passano un valore da una variabile; in questo caso il compilatore rileva se un metodo viene rinominato. I listener aggiunti dal codice non compaiono mai nell’elenco On Click (), quindi un pulsante collegato in entrambi i modi li chiama entrambi.

challenge icon

Sfida

Facile

Fai funzionare i tre pulsanti del ponte levatoio in Drawbridge.cs.

  1. La riga On Click () di ciascun pulsante chiama Raise, Lower oppure ToggleLamp. Rinomina LowerBridge in Lower.
  2. Scrivi public void Raise(): bridge.localRotation ruota di 70 gradi attorno all’asse x e statusText mostra Bridge: up.
  3. Scrivi public void ToggleLamp(): accende warningLamp quando è spenta e la spegne quando è accesa.

Premi «Gioca»: ogni pulsante svolge la sua funzione. Poi premi «Verifica».

Provalo tu

using UnityEngine;
using TMPro;

public class Drawbridge : MonoBehaviour
{
    public Transform bridge;
    public TMP_Text statusText;
    public GameObject warningLamp;

    public void LowerBridge()
    {
        bridge.localRotation = Quaternion.Euler(0f, 0f, 0f);
        statusText.text = "Bridge: down";
    }
}

Tutte le lezioni di Creare veri giochi

Esercitati da solo: Playground Unity