Guida per principianti dell'interfaccia Unity C#

Un'interfaccia in C# è un contratto che definisce un insieme di metodi, proprietà ed eventi che una classe deve implementare. Funge da modello per l'implementazione di funzionalità in più classi. Le interfacce forniscono un modo per ottenere il polimorfismo, consentendo a classi diverse di condividere comportamenti comuni.

Unity Interfaccia C#

Per utilizzare le interfacce in Unity, procedi nel seguente modo:

  • Crea un nuovo script e assegnagli un nome qualsiasi (nel mio caso lo chiamerò InterfaceContainer)
  • Rimuovi tutto al suo interno quindi incolla il codice qui sotto:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

L'interfaccia è chiamata IEntity (Nota: la maiuscola i all'inizio non è necessaria, ma per comodità, nomina tutte le tue interfacce con 'I' all'inizio, in questo modo sapresti quando la classe usa un'interfaccia).

Per utilizzare l'interfaccia in uno script C#, procedi nel seguente modo:

  • Crea un nuovo script e assegnagli un nome qualsiasi (nel mio caso lo chiamerò EntityScript)
  • Aggiungi il nome dell'interfaccia dopo MonoBehaviour, che in questo caso è IEntity (separato da una virgola)
public class EntityScript : MonoBehaviour, IEntity

Noterai che lo script dà un errore, perché i metodi dell'interfaccia non sono implementati. Quindi implementiamo i metodi IEntity:

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

    public void ApplyDamage(float points)
    {
        health -= points;
    }
}

I metodi di interfaccia sono ora implementati.

In che modo le interfacce semplificano il flusso di lavoro di programmazione?

Il vantaggio principale delle interfacce C# è che possono essere utilizzate da più classi, quindi invece di chiamare GetComponent per ogni script, puoi ottenere tutti i riferimenti allo script utilizzando l'interfaccia nome.

Usa le interfacce C# quando devi implementare gli stessi metodi in più di uno script o quando devi fare riferimento a una classe sconosciuta nello stesso contesto.

Controlla l'esempio qui sotto:

        //Get the script that uses IEntity interface
        IEntity interfaceEntity = gameObject.GetComponent<IEntity>();
        interfaceEntity.Initialize(); //Initializing the entity
        interfaceEntity.ApplyDamage(10); //Applying the damage
        interfaceEntity.health += 10; //Healing the entity

Lo script sopra ottiene un componente con un'interfaccia IEntity, quindi chiama i suoi metodi.

Bonus

Le interfacce possono anche accettare tipi di dati personalizzati, ad esempio:

public interface IHealable<T>
{
    void Heal(T type);
}

Il tipo di dati viene quindi fornito durante l'implementazione dell'interfaccia in una classe (può essere un tipo standard come float o int o un tipo più complesso come un Classe o anche un'altra interfaccia):

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity, IHealable<int>
{

    public float health { get; set; }

    public void Initialize()
    {
        //health = 100;
        Heal(100);
    }

    public void ApplyDamage(float points)
    {
        health -= points;
    }

    public void Heal(int points)
    {
        health = points;
    }
}
Articoli suggeriti
Introduzione alla macchina a stati in Unity
Guida completa per trasformare la rotazione in Unity
Implementazione del controllo del visore VR in Unity
Una guida per integrare il controller Nintendo con Unity
Script per catturare oggetti in Unity
Una guida al caricamento delle scene in Unity
Creazione di una scena Game Over in Unity