Einsteigerhandbuch für die Unity C#-Schnittstelle

Eine Schnittstelle in C# ist ein Vertrag, der eine Reihe von Methoden, Eigenschaften und Ereignissen definiert, die eine Klasse implementieren muss. Es fungiert als Blaupause für die Implementierung von Funktionen in mehreren Klassen. Schnittstellen bieten eine Möglichkeit, Polymorphismus zu erreichen, sodass verschiedene Klassen gemeinsame Verhaltensweisen aufweisen können.

Unity C#-Schnittstelle

Um Schnittstellen in Unity zu verwenden, führen Sie die folgenden Schritte aus:

  • Erstellen ein neues Skript und benennen Sie es beliebig (in meinem Fall nenne ich es InterfaceContainer)
  • Entfernen Sie alles darin und fügen Sie dann den folgenden Code ein:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

Die Schnittstelle heißt IEntity (Hinweis: Der Großbuchstabe i am Anfang ist nicht erforderlich, aber der Einfachheit halber benennen Sie alle Ihre Schnittstellen mit „I“ am Anfang beginnen, so würden Sie wissen, wann die Klasse eine Schnittstelle verwendet).

Um die Schnittstelle in einem C#-Skript zu verwenden, führen Sie die folgenden Schritte aus:

  • Erstellen ein neues Skript und benennen Sie es beliebig (in meinem Fall nenne ich es EntityScript)
  • Fügen Sie nach dem MonoBehaviour einen Schnittstellennamen hinzu, in diesem Fall IEntity (durch ein Komma getrennt).
public class EntityScript : MonoBehaviour, IEntity

Sie werden feststellen, dass das Skript einen Fehler ausgibt, weil die Schnittstellenmethoden nicht implementiert sind. Also implementieren wir IEntity-Methoden:

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

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

Die Schnittstellenmethoden sind nun implementiert.

Wie vereinfachen Schnittstellen den Programmierworkflow?

Der Hauptvorteil von C#-Schnittstellen besteht darin, dass sie von mehreren -Klassen verwendet werden können. Anstatt GetComponent für jedes Skript aufzurufen, können Sie alle Skriptreferenzen mithilfe des Schnittstellennamens abrufen.

Verwenden Sie die C#-Schnittstellen, wenn Sie dieselben Methoden in mehr als einem Skript implementieren müssen oder wenn Sie im selben Kontext auf eine unbekannte Klasse verweisen müssen.

Sehen Sie sich das folgende Beispiel an:

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

Das obige Skript ruft eine Komponente mit einer IEntity-Schnittstelle ab und ruft dann deren Methoden auf.

Bonus

Schnittstellen können auch benutzerdefinierte Datentypen akzeptieren, zum Beispiel:

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

Der Datentyp wird dann bereitgestellt, wenn die Schnittstelle in einer Klasse implementiert wird (es kann ein Standardtyp wie float oder int oder ein komplexerer Typ wie Class oder sogar ein anderer sein). Schnittstelle):

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;
    }
}
Empfohlene Artikel
Einführung in State Machine in Unity
Die nützlichsten Codeausschnitte für Unity-Entwickler
So ändern Sie die Bildschirmauflösung im Unity-Spiel
Ein praktischer Ansatz für modularen Code in Unity
Methoden zu Beginn der Laufzeit, die Werte in Unity initialisieren
Logik für Unity speichern und laden
Einführung in die Skriptsprache Unity C#