Ghid pentru începători pentru interfața Unity C#

O interfață în C# este un contract care definește un set de metode, proprietăți și evenimente pe care o clasă trebuie să le implementeze. Acționează ca un model pentru implementarea funcționalității în mai multe clase. Interfețele oferă o modalitate de a obține polimorfismul, permițând diferitelor clase să împărtășească comportamente comune.

Unity Interfață C#

Pentru a utiliza interfețele în Unity, urmați pașii de mai jos:

  • Creați un script nou și numiți-l orice (în cazul meu îl voi numi InterfaceContainer)
  • Îndepărtați tot ce este în interior, apoi lipiți codul de mai jos:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

Interfața se numește IEntity (Notă: capitalul i la început nu este necesară, dar pentru comoditate, numiți toate interfețele cu „I” la începeți, astfel veți ști când clasa folosește o interfață).

Pentru a utiliza interfața într-un script C#, urmați pașii de mai jos:

  • Creați un script nou și numiți-l orice (în cazul meu îl voi numi EntityScript)
  • Adăugați numele interfeței după MonoBehaviour, care este IEntity în acest caz (separat prin virgulă)
public class EntityScript : MonoBehaviour, IEntity

Veți observa că scriptul dă o eroare, asta pentru că metodele de interfață nu sunt implementate. Deci, să implementăm metodele 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;
    }
}

Metodele de interfață sunt acum implementate.

Cum simplifică interfețele fluxul de lucru de programare?

Principalul avantaj al interfețelor C# este că pot fi utilizate de mai multe classes, așa că în loc să apelați GetComponent pentru fiecare script, puteți obține toate referințele de script folosind numele interfeței.

Utilizați interfețele C# atunci când trebuie să implementați aceleași metode în mai multe scripturi sau când trebuie să faceți referire la o clasă necunoscută în același context.

Verificați exemplul de mai jos:

        //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

Scriptul de mai sus primește o componentă cu o interfață IEntity, apoi apelează metodele acesteia.

Primă

Interfețele pot accepta și tipuri de date personalizate, de exemplu:

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

Tipul de date este apoi furnizat la implementarea interfeței într-o clasă (poate fi un tip standard, cum ar fi float sau int, sau un tip mai complex, cum ar fi un Class sau chiar altul Interfață):

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;
    }
}