Unity C# Interface nybegynnerveiledning

Et grensesnitt i C# er en kontrakt som definerer et sett med metoder, egenskaper og hendelser som en klasse må implementere. Den fungerer som en blåkopi for implementering av funksjonalitet i flere klasser. Grensesnitt gir en måte å oppnå polymorfisme, slik at forskjellige klasser kan dele felles atferd.

Unity C#-grensesnitt

For å bruke grensesnitt i Unity, følg trinnene nedenfor:

  • Lag et nytt skript og navngi det hva som helst (i mitt tilfelle kaller jeg det InterfaceContainer)
  • Fjern alt inni den og lim inn koden nedenfor:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

Grensesnittet kalles IEntity (Merk: Hovedstaden i i starten er ikke nødvendig, men for enkelhets skyld, navngi alle grensesnittene dine med '[elem] =11]I' i starten, på den måten ville du vite når klassen bruker et grensesnitt).

For å bruke grensesnittet i et C#-skript, følg trinnene nedenfor:

  • Opprett et nytt skript og navngi det hva som helst (i mitt tilfelle kaller jeg det EntityScript)
  • Legg til grensesnittnavn etter MonoBehaviour, som er IEntity i dette tilfellet (atskilt med komma)
public class EntityScript : MonoBehaviour, IEntity

Du vil legge merke til at skriptet gir en feil, det er fordi grensesnittmetodene ikke er implementert. Så la oss implementere 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;
    }
}

Grensesnittmetodene er nå implementert.

Hvordan forenkler grensesnitt arbeidsflyten for programmering?

Hovedfordelen med C#-grensesnitt er at de kan brukes av flere klasser, så i stedet for å kalle GetComponent for hvert skript, kan du få alle skriptreferansene ved å bruke grensesnittnavnet.

Bruk C#-grensesnittene når du trenger å implementere de samme metodene i mer enn ett skript, eller når du trenger å referere til en ukjent klasse i samme kontekst.

Sjekk eksempelet nedenfor:

        //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 ovenfor får en komponent med et IEntity-grensesnitt, og kaller deretter metodene.

Bonus

Grensesnitt kan også godta tilpassede datatyper, for eksempel:

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

Datatypen oppgis da når grensesnittet implementeres i en klasse (det kan være en standardtype som float eller int, eller en mer kompleks type som en klasse eller til og med et annet grensesnitt):

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;
    }
}
Foreslåtte artikler
Introduksjon til State Machine in Unity
Opprette interaktive objekter i Unity
Implementering av kinetiske interaksjoner i enhet
Åpning av skuffer og skap med spesifikke nøkler i Unity
Plukk og slipp-system uten inventar i Unity
Legge til spillerinngang til en bil i Unity
Bruker Runtime Animator Controller i Unity