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