Unity 结构体监听
时间: 2023-07-09 08:24:34 浏览: 101
Unity3D教程:鼠标碰撞检测与事件监听1
在Unity中,可以使用UnityEvent和UnityAction来实现结构体的监听。UnityEvent是一个可序列化的类,它可以包含多个UnityAction。而UnityAction是一个委托,它可以引用一个方法。因此,可以通过UnityEvent将多个UnityAction与同一个结构体关联起来,以实现对该结构体的监听。
具体实现步骤如下:
1. 定义一个结构体,例如:
```csharp
public struct MyStruct {
public int value;
}
```
2. 定义一个UnityEvent,并指定其泛型类型为MyStruct:
```csharp
[System.Serializable]
public class MyStructEvent : UnityEvent<MyStruct> {}
```
3. 在需要监听结构体的脚本中,创建一个MyStructEvent类型的变量,并添加需要执行的方法:
```csharp
public MyStructEvent OnMyStructChanged;
void ChangeMyStruct() {
MyStruct myStruct = new MyStruct();
myStruct.value = 100;
OnMyStructChanged.Invoke(myStruct);
}
```
4. 在需要响应结构体变化的脚本中,将需要执行的方法添加到MyStructEvent事件中:
```csharp
void Start() {
FindObjectOfType<MyStructChangingScript>().OnMyStructChanged.AddListener(MyMethod);
}
void MyMethod(MyStruct myStruct) {
Debug.Log("MyStruct value changed to " + myStruct.value.ToString());
}
```
这样,当MyStructChangingScript脚本中的ChangeMyStruct方法被调用时,MyMethod方法将会被执行,并且传入MyStruct的新值。
阅读全文