Unity C# Interface Beginnershandleiding

Een interface in C# is een contract dat een reeks methoden, eigenschappen en gebeurtenissen definieert die een klasse moet implementeren. Het fungeert als een blauwdruk voor het implementeren van functionaliteit in meerdere klassen. Interfaces bieden een manier om polymorfisme te bereiken, waardoor verschillende klassen gemeenschappelijk gedrag kunnen delen.

Unity C#-interface

Volg de onderstaande stappen om interfaces te gebruiken in Unity:

  • Maak een nieuw script en noem het een willekeurige naam (in mijn geval noem ik het InterfaceContainer)
  • Verwijder alles erin en plak de onderstaande code:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

De interface heet IEntity (Opmerking: de hoofdletter i aan het begin is niet nodig, maar voor het gemak kunt u al uw interfaces een naam geven met 'I' aan het begin, op die manier weet je wanneer de klasse een interface gebruikt).

Om de interface in een C#-script te gebruiken, volgt u de onderstaande stappen:

  • Maak een nieuw script en noem het een willekeurige naam (in mijn geval noem ik het EntityScript)
  • Voeg de interfacenaam toe na MonoBehaviour, in dit geval IEntity (gescheiden door een komma)
public class EntityScript : MonoBehaviour, IEntity

U zult merken dat het script een foutmelding geeft, omdat de interfacemethoden niet zijn geïmplementeerd. Laten we dus IEntity-methoden implementeren:

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

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

De interfacemethoden zijn nu geïmplementeerd.

Hoe vereenvoudigen interfaces de programmeerworkflow?

Het belangrijkste voordeel van C#-interfaces is dat ze door meerdere klassen kunnen worden gebruikt, dus in plaats van GetComponent voor elk script aan te roepen, kunt u alle scriptreferenties verkrijgen door de interfacenaam te gebruiken.

Gebruik de C#-interfaces wanneer u dezelfde methoden in meer dan één script moet implementeren, of wanneer u in dezelfde context naar een onbekende klasse moet verwijzen.

Bekijk het onderstaande voorbeeld:

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

Het bovenstaande script haalt een component op met een IEntity-interface en roept vervolgens de methoden ervan aan.

Bonus

Interfaces kunnen ook aangepaste gegevenstypen accepteren, bijvoorbeeld:

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

Het gegevenstype wordt vervolgens opgegeven bij het implementeren van de interface in een klasse (het kan een standaardtype zijn zoals float of int, of een complexer type zoals een klasse of zelfs een andere interface):

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;
    }
}
Voorgestelde artikelen
Inleiding tot staatsmachine in eenheid
Inzicht in de componentgebaseerde architectuur van Unity
Hoe je een betere programmeur kunt worden in Unity
Interactieve objecten creëren in eenheid
Kinetische interacties in eenheid implementeren
Laden en kasten openen met specifieke sleutels in eenheid
Pick-and-drop-systeem zonder inventaris in eenheid