Unity C# Interface begyndervejledning

En grænseflade i C# er en kontrakt, der definerer et sæt metoder, egenskaber og hændelser, som en klasse skal implementere. Det fungerer som en plan for implementering af funktionalitet i flere klasser. Grænseflader giver en måde at opnå polymorfi på, hvilket giver forskellige klasser mulighed for at dele fælles adfærd.

Unity C#-grænseflade

Følg nedenstående trin for at bruge grænseflader i Unity:

  • Opret et nyt script og navngiv det hvad som helst (i mit tilfælde vil jeg navngive det InterfaceContainer)
  • Fjern alt inde i det, og indsæt derefter 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
}

Interfacet hedder IEntity (Bemærk: Det store i i starten er ikke nødvendigt, men for nemheds skyld, navngiv alle dine grænseflader med 'I' ved start, på den måde ville du vide, hvornår klassen bruger en grænseflade).

Følg nedenstående trin for at bruge grænsefladen i et C#-script:

  • Opret et nyt script og navngiv det hvad som helst (i mit tilfælde vil jeg navngive det EntityScript)
  • Tilføj grænsefladenavn efter MonoBehaviour, som er IEntity i dette tilfælde (adskilt af et komma)
public class EntityScript : MonoBehaviour, IEntity

Du vil bemærke, at scriptet giver en fejl, det er fordi grænseflademetoderne ikke er implementeret. Så lad os 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;
    }
}

Grænseflademetoderne er nu implementeret.

Hvordan forenkler grænseflader programmeringsarbejdsgangen?

Den største fordel ved C#-grænseflader er, at de kan bruges af flere klasser, så i stedet for at kalde GetComponent for hvert script, kan du få alle scriptreferencerne ved at bruge interfacenavnet.

Brug C#-grænsefladerne, når du skal implementere de samme metoder i mere end ét script, eller når du skal referere til en ukendt klasse i samme kontekst.

Tjek eksemplet 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

Scriptet ovenfor får en komponent med en IEntity-grænseflade og kalder derefter dens metoder.

Bonus

Grænseflader kan også acceptere brugerdefinerede datatyper, for eksempel:

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

Datatypen leveres derefter, når grænsefladen implementeres i en klasse (det kan være en standardtype såsom float eller int, eller en mere kompleks type såsom en Class eller endda en anden 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;
    }
}
Foreslåede artikler
Introduktion til State Machine in Unity
Oprettelse af interaktive objekter i enhed
Implementering af kinetiske interaktioner i enhed
Åbning af skuffer og skabe med specifikke nøgler i enhed
Pick and Drop-system uden inventar i Unity
Tilføjelse af spilleradgang til en bil i Unity
Brug af Runtime Animator Controller i Unity