Посібник для початківців інтерфейсу Unity C#
Інтерфейс у C# — це контракт, який визначає набір методів, властивостей і подій, які має реалізувати клас. Він діє як проект для реалізації функціональності в кількох класах. Інтерфейси забезпечують спосіб досягнення поліморфізму, дозволяючи різним класам спільно використовувати спільну поведінку.
Unity Інтерфейс C#
Щоб використовувати інтерфейси в Unity, виконайте наведені нижче дії.
- Створіть новий сценарій і назвіть його як завгодно (у моєму випадку я назву його InterfaceContainer)
- Видаліть усе, що всередині нього, а потім вставте код нижче:
public interface IEntity
{
void Initialize(); //Function without any arguments
float health { get; set; } //A variable
void ApplyDamage(float points); //Function with one argument
}
Інтерфейс називається IEntity (Примітка. Велика i на початку не обов’язкова, але для зручності назвіть усі свої інтерфейси за допомогою «I» почати, таким чином ви дізнаєтесь, коли клас використовує інтерфейс).
Щоб використовувати інтерфейс у сценарії C#, виконайте наведені нижче дії.
- Створіть новий сценарій і назвіть його як завгодно (у моєму випадку я назву його EntityScript)
- Додайте ім’я інтерфейсу після MonoBehaviour, яке в даному випадку є IEntity (розділене комою)
public class EntityScript : MonoBehaviour, IEntity
Ви помітите, що сценарій видає помилку, тому що методи інтерфейсу не реалізовано. Отже, давайте реалізуємо методи 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;
}
}
Методи інтерфейсу тепер реалізовано.
Як інтерфейси спрощують робочий процес програмування?
Основна перевага інтерфейсів C# полягає в тому, що вони можуть використовуватися декількома класами, тому замість виклику GetComponent для кожного сценарію ви можете отримати всі посилання на сценарії, використовуючи назву інтерфейсу.
Використовуйте інтерфейси C#, коли вам потрібно реалізувати ті самі методи в кількох сценаріях або коли вам потрібно посилатися на невідомий клас у тому самому контексті.
Перевірте приклад нижче:
//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
Наведений вище сценарій отримує компонент з інтерфейсом IEntity, а потім викликає його методи.
Бонус
Інтерфейси також можуть приймати спеціальні типи даних, наприклад:
public interface IHealable<T>
{
void Heal(T type);
}
Потім тип даних надається під час реалізації інтерфейсу в класі (це може бути стандартний тип, такий як float або int, або більш складний тип, такий як Class або навіть інший Інтерфейс):
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;
}
}