Guide du débutant de l'interface Unity C#

Une interface en C# est un contrat qui définit un ensemble de méthodes, de propriétés et d'événements qu'une classe doit implémenter. Il agit comme un modèle pour implémenter des fonctionnalités dans plusieurs classes. Les interfaces fournissent un moyen de réaliser le polymorphisme, permettant à différentes classes de partager des comportements communs.

Unity Interface C#

Pour utiliser les interfaces dans Unity, suivez les étapes ci-dessous:

  • Créez un nouveau script et nommez-le comme vous voulez (dans mon cas, je l'appellerai InterfaceContainer)
  • Supprimez tout ce qu'il contient puis collez le code ci-dessous:
public interface IEntity
{
    void Initialize(); //Function without any arguments
    float health { get; set; } //A variable
    void ApplyDamage(float points); //Function with one argument
}

L'interface s'appelle IEntity (Remarque: Le i majuscule au début n'est pas nécessaire, mais pour plus de commodité, nommez toutes vos interfaces avec 'I' au début, ainsi vous saurez quand la classe utilise une interface).

Pour utiliser l'interface dans un script C#, suivez les étapes ci-dessous:

  • Créez un nouveau script et nommez-le comme vous voulez (dans mon cas, je le nommerai EntityScript)
  • Ajoutez le nom de l'interface après le MonoBehaviour, qui est IEntity dans ce cas (séparé par une virgule)
public class EntityScript : MonoBehaviour, IEntity

Vous remarquerez que le script donne une erreur, c'est parce que les méthodes d'interface ne sont pas implémentées. Implémentons donc les méthodes IEntity:

using UnityEngine;

public class EntityScript : MonoBehaviour, IEntity
{

    public float health { get; set; }

    public void Initialize()
    {
        health = 100;
    }

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

Les méthodes d'interface sont maintenant implémentées.

Comment les interfaces simplifient-elles le workflow de programmation ?

Le principal avantage des interfaces C# est qu'elles peuvent être utilisées par plusieurs classes, donc au lieu d'appeler GetComponent pour chaque script, vous pouvez obtenir toutes les références de script en utilisant l'interface nom.

Utilisez les interfaces C# lorsque vous devez implémenter les mêmes méthodes dans plusieurs scripts ou lorsque vous devez référencer une classe inconnue dans le même contexte.

Vérifiez l'exemple ci-dessous:

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

Le script ci-dessus obtient un composant avec une interface IEntity, puis appelle ses méthodes.

Prime

Les interfaces peuvent également accepter des types de données personnalisés, par exemple:

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

Le type de données est ensuite fourni lors de l'implémentation de l'interface dans une classe (il peut s'agir d'un type standard tel que float ou int, ou d'un type plus complexe tel qu'un Classe ou même une autre 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;
    }
}
Articles suggérés
Introduction à la machine d'état dans Unity
Un guide sur le chargement de scènes dans Unity
Guide complet pour transformer la rotation dans Unity
Création d'une scène de jeu dans Unity
Codage d'un système d'inventaire simple avec glisser-déposer de l'interface utilisateur dans Unity
Implémentation du contrôle du casque VR dans Unity
Un guide pour intégrer la manette Nintendo à Unity