Gli enum e switch in Unity

Gli enum in Unity sono un tipo di dato che permette di creare un insieme di costanti con un nome associato, utili per rappresentare un insieme di valori ben definiti e predefiniti.

Ad esempio, in un gioco potresti voler definire un insieme di stati per un personaggio, come “camminando”, “saltando”, “attaccando”, “morto”, ecc. In questo caso, potresti creare un enum chiamato “StatiPersonaggio” e definire tutte queste costanti all’interno di esso.

Una volta creato l’enum, puoi usarlo all’interno del codice per fare riferimento a queste costanti, rendendo il codice più leggibile e mantenibile. Ad esempio, potresti definire una variabile “CurrentState” di tipo “PlayerState” per tenere traccia dello stato attuale del personaggio.

Sono come gli array?

Gli enum in Unity sono simili agli array nel senso che rappresentano una raccolta di elementi. Tuttavia, a differenza degli array, gli Enum sono costanti con un set di valori predefiniti che non possono essere modificati durante l’esecuzione del programma. Inoltre, gli Enum sono spesso usati per creare una lista di opzioni predefinite selezionabili dall’utente, come ad esempio il tipo di arma selezionabile in un videogioco.

Gli Switch

In Unity, lo switch è un costrutto del linguaggio di programmazione C# che viene utilizzato per valutare un’espressione e selezionare un blocco di codice da eseguire in base al valore dell’espressione.

Lo switch può essere utilizzato ad esempio per creare comportamenti differenti in base allo stato di un gioco, alla scena corrente o alla scelta dell’utente.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnumExample : MonoBehaviour
{
    enum GameState
    {
        Starting,
        Playing,
        Paused,
        GameOver
    }

    GameState currentState = GameState.Starting;

    void Update()
    {
        //cambia lo stato corrente se viene premuto il tasto P
        if (Input.GetKeyDown(KeyCode.P))
        {
            switch (currentState)
            {
                case GameState.Starting:
                    currentState = GameState.Playing;
                    break;
                case GameState.Playing:
                    currentState = GameState.Paused;
                    break;
                case GameState.Paused:
                    currentState = GameState.GameOver;
                    break;
                case GameState.GameOver:
                    currentState = GameState.Starting;
                    break;
                default:
                    break;
            }

            Debug.Log("Current Game State: " + currentState);
        }
    }
}
/ 5
Grazie per aver votato!
mycus
Author: mycus