Ghid pentru începători pentru interfața Unity C#
O interfață în C# este un contract care definește un set de metode, proprietăți și evenimente pe care o clasă trebuie să le implementeze. Acționează ca un model pentru implementarea funcționalității în mai multe clase. Interfețele oferă o modalitate de a obține polimorfismul, permițând diferitelor clase să împărtășească comportamente comune.
Unity Interfață C#
Pentru a utiliza interfețele în Unity, urmați pașii de mai jos:
- Creați un script nou și numiți-l orice (în cazul meu îl voi numi InterfaceContainer)
- Îndepărtați tot ce este în interior, apoi lipiți codul de mai jos:
public interface IEntity
{
void Initialize(); //Function without any arguments
float health { get; set; } //A variable
void ApplyDamage(float points); //Function with one argument
}
Interfața se numește IEntity (Notă: capitalul i la început nu este necesară, dar pentru comoditate, numiți toate interfețele cu „I” la începeți, astfel veți ști când clasa folosește o interfață).
Pentru a utiliza interfața într-un script C#, urmați pașii de mai jos:
- Creați un script nou și numiți-l orice (în cazul meu îl voi numi EntityScript)
- Adăugați numele interfeței după MonoBehaviour, care este IEntity în acest caz (separat prin virgulă)
public class EntityScript : MonoBehaviour, IEntity
Veți observa că scriptul dă o eroare, asta pentru că metodele de interfață nu sunt implementate. Deci, să implementăm metodele 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;
}
}
Metodele de interfață sunt acum implementate.
Cum simplifică interfețele fluxul de lucru de programare?
Principalul avantaj al interfețelor C# este că pot fi utilizate de mai multe classes, așa că în loc să apelați GetComponent pentru fiecare script, puteți obține toate referințele de script folosind numele interfeței.
Utilizați interfețele C# atunci când trebuie să implementați aceleași metode în mai multe scripturi sau când trebuie să faceți referire la o clasă necunoscută în același context.
Verificați exemplul de mai jos:
//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
Scriptul de mai sus primește o componentă cu o interfață IEntity, apoi apelează metodele acesteia.
Primă
Interfețele pot accepta și tipuri de date personalizate, de exemplu:
public interface IHealable<T>
{
void Heal(T type);
}
Tipul de date este apoi furnizat la implementarea interfeței într-o clasă (poate fi un tip standard, cum ar fi float sau int, sau un tip mai complex, cum ar fi un Class sau chiar altul Interfață):
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;
}
}