Руководство для начинающих по интерфейсу Unity C#

Интерфейс в C# — это контракт, определяющий набор методов, свойств и событий, которые должен реализовать класс. Он действует как образец для реализации функциональности в нескольких классах. Интерфейсы предоставляют способ достижения полиморфизма, позволяя различным классам иметь общее поведение.

Unity Интерфейс С#

Чтобы использовать интерфейсы в 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» в начале). start, чтобы вы знали, когда класс использует интерфейс).

Чтобы использовать интерфейс в сценарии 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;
    }
}
Рекомендуемые статьи
Введение в конечный автомат в Unity
Руководство по загрузке сцены в Unity
Руководство по интеграции контроллера Nintendo с Unity
Скрипт для захвата объектов в Unity
Руководство по MonoBehavior в Unity
Добавление входа игрока в машину в Unity
Реализация пула объектов в Unity