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# 接口的主要优点是它们可以被多个 classes 使用,因此不必为每个脚本调用 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 中创建交互式对象
在 Unity 中实现动力学交互
在 Unity 中使用特定钥匙打开抽屉和橱柜
Unity 中没有库存的分拣系统
在 Unity 中添加玩家进入汽车
在 Unity 中使用运行时动画控制器