unity中委托与事件
时间: 2024-05-07 17:18:52 浏览: 104
在Unity中,委托和事件都是C#语言的特性。它们用于实现在不同对象之间进行通信和协作的机制。
委托是一种类型,它可以用来存储对方法的引用。我们可以将委托看作是一个变量,该变量引用一个或多个方法。当调用委托时,它将依次调用所有委托引用的方法。委托可以用于事件处理、回调等场景。
Unity中的事件是一种特殊的委托,它只能用于触发特定事件时通知其他对象。事件只能通过添加或移除处理程序来更改,而不能直接调用。事件通常用于游戏中的交互、动画等场景。
下面是一个使用委托和事件的示例:
```csharp
//声明一个委托
public delegate void MyDelegate();
public class MyClass
{
//声明一个事件
public event MyDelegate myEvent;
//调用事件
public void CallEvent()
{
if(myEvent != null)
{
myEvent();
}
}
}
public class OtherClass
{
public void MyMethod()
{
Debug.Log("MyMethod is called.");
}
}
public class Test : MonoBehaviour
{
private MyClass myClass;
private void Start()
{
myClass = new MyClass();
OtherClass otherClass = new OtherClass();
//将一个方法添加到事件的处理程序列表中
myClass.myEvent += otherClass.MyMethod;
//调用事件
myClass.CallEvent();
//将方法从事件的处理程序列表中移除
myClass.myEvent -= otherClass.MyMethod;
}
}
```
在这个示例中,我们声明了一个委托 `MyDelegate` 和一个类 `MyClass`,该类包含一个事件 `myEvent`。我们还声明了一个类 `OtherClass`,其中包含一个方法 `MyMethod`。在 `Test` 类的 `Start` 方法中,我们创建了一个 `MyClass` 的实例,并将 `OtherClass` 中的方法 `MyMethod` 添加到 `myEvent` 事件的处理程序列表中。然后,我们调用 `myEvent` 事件,此时 `MyMethod` 方法会被执行。最后,我们将 `MyMethod` 方法从 `myEvent` 事件的处理程序列表中移除。
阅读全文