unity枚举事件控制器
时间: 2023-08-01 15:10:04 浏览: 98
可以使用一个枚举事件控制器来管理多个枚举事件,方便统一调用和管理。
下面是一个示例代码:
```
public enum MyEnumType {
Option1,
Option2,
Option3
}
public class MyEnumEvent : UnityEvent<MyEnumType> {}
public class EnumEventController : MonoBehaviour {
public static EnumEventController instance;
public MyEnumEvent onEnum1Changed;
public MyEnumEvent onEnum2Changed;
public MyEnumEvent onEnum3Changed;
private void Awake() {
if (instance == null) {
instance = this;
} else {
Destroy(gameObject);
}
}
public void InvokeEnumEvent(int enumIndex, MyEnumType enumValue) {
switch (enumIndex) {
case 1:
onEnum1Changed.Invoke(enumValue);
break;
case 2:
onEnum2Changed.Invoke(enumValue);
break;
case 3:
onEnum3Changed.Invoke(enumValue);
break;
default:
break;
}
}
}
```
代码中,首先定义了一个枚举类型 `MyEnumType`,然后创建了一个继承自 `UnityEvent<MyEnumType>` 的自定义事件类型 `MyEnumEvent`。
在 `EnumEventController` 类中,声明了三个名为 `onEnum1Changed`、`onEnum2Changed`、`onEnum3Changed` 的公共变量,类型均为 `MyEnumEvent`。同时,声明了一个静态的 `instance` 变量,用于获取单例实例。
在 `Awake` 方法中,判断 `instance` 是否为 null,如果为 null 则将 `instance` 赋值为当前实例,否则销毁当前对象。
最后定义了一个名为 `InvokeEnumEvent` 的公共方法,接受两个参数:`enumIndex` 和 `enumValue`。根据 `enumIndex` 的值,调用对应的枚举事件,并传入枚举值。
其他脚本可以通过以下方式调用枚举事件:
```
EnumEventController.instance.InvokeEnumEvent(1, MyEnumType.Option1);
```
其中,第一个参数为枚举事件的索引,第二个参数为枚举值。根据索引值,`EnumEventController` 类会调用对应的枚举事件,并传入枚举值。
通过这种方式,可以方便地在不同的脚本中调用和管理多个枚举事件。
阅读全文