Unity写一个事件和委托的框架
时间: 2024-10-13 08:10:10 浏览: 22
Unity 事件框架的核心技术
在Unity中,事件和委托是一个强大的机制,用于处理异步操作、用户输入或者其他需要通知其他组件更新情况的场景。以下是创建一个基础事件和委托框架的基本步骤:
1. **委托(Delegate)**:
- 首先,创建一个泛型委托类型,例如`EventAction<T>`,其中T是方法接受的参数类型。
```csharp
public delegate void EventAction<T>(T data);
```
2. **事件(Event)**:
- 使用`Event`类来封装委托,这样可以存储和管理特定类型的事件。
```csharp
public class CustomEvent<T> {
private EventAction<T> handler;
public event EventAction<T> OnMyEvent;
public void AddHandler(EventAction<T> handler) {
this.handler += handler;
}
public void RemoveHandler(EventAction<T> handler) {
this.handler -= handler;
}
public void Raise(T data) {
if (handler != null) {
handler(data);
}
}
}
```
3. **触发事件**:
- 当需要触发事件时,只需要调用`Raise`方法,并传入相关的数据。
```csharp
private CustomEvent<int> myEvent;
void Start() {
myEvent = new CustomEvent<int>();
}
void SomeFunction(int value) {
myEvent.Raise(value); // 这将调用所有订阅了OnMyEvent的函数
}
```
4. **订阅者**:
- 其他组件想要接收这个事件通知,只需订阅`CustomEvent`:
```csharp
void SubscribeToEvent() {
myEvent.OnMyEvent += MyEventHandler;
}
void UnsubscribeFromEvent() {
myEvent.OnMyEvent -= MyEventHandler;
}
private void MyEventHandler(int data) {
Debug.Log("Received data: " + data);
}
```
阅读全文