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