Unity C# Interface nybörjarguide

Ett gränssnitt i C# är ett kontrakt som definierar en uppsättning metoder, egenskaper och händelser som en klass måste implementera. Det fungerar som en ritning för att implementera funktionalitet i flera klasser. Gränssnitt ger ett sätt att uppnå polymorfism, vilket gör att olika klasser kan dela gemensamma beteenden.

Unity C#-gränssnitt

För att använda gränssnitt i Unity, följ stegen nedan:

  • Skapa ett nytt skript och namnge det vad som helst (i mitt fall kallar jag det InterfaceContainer)
  • Ta bort allt inuti den och klistra in koden nedan:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

Gränssnittet kallas IEntity (Obs! Det stora i i början är inte nödvändigt, men för enkelhetens skull namnge alla dina gränssnitt med ' Jag' i början, på så sätt skulle du veta när klassen använder ett gränssnitt).

Följ stegen nedan för att använda gränssnittet i ett C#-skript:

  • Skapa ett nytt skript och namnge det vad som helst (i mitt fall kommer jag att döpa det till EntityScript)
  • Lägg till gränssnittsnamn efter MonoBehaviour, vilket är IEntity i det här fallet (avgränsade med kommatecken)
public class EntityScript : MonoBehaviour, IEntity

Du kommer att märka att skriptet ger ett fel, det beror på att gränssnittsmetoderna inte är implementerade. Så låt oss implementera IEntity-metoder:

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

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

Gränssnittsmetoderna är nu implementerade.

Hur förenklar gränssnitt programmeringsarbetsflödet?

Den största fördelen med C#-gränssnitt är att de kan användas av flera klasser, så istället för att anropa GetComponent för varje skript, kan du få alla skriptreferenser genom att använda gränssnittsnamnet.

Använd C#-gränssnitten när du behöver implementera samma metoder i mer än ett skript, eller när du behöver referera till en okänd klass i samma sammanhang.

Kontrollera exemplet nedan:

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

Skriptet ovan får en komponent med ett IEntity-gränssnitt och anropar sedan dess metoder.

Bonus

Gränssnitt kan också acceptera anpassade datatyper, till exempel:

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

Datatypen tillhandahålls sedan när gränssnittet implementeras i en klass (det kan vara en standardtyp som float eller int, eller en mer komplex typ som en klass eller till och med ett annat gränssnitt):

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