event、Event 和 UnityEvent
event和delegate
event是C#的保留关键字,是委托的一种封装。委托(delegate)可以理解为C或C++中的函数指针,可以保存具有特定返回类型和参数列表的方法的引用,并直接作为函数的参数间接调用目标函数。事件(event)则可以理解为基于委托的一个函数指针栈,可以包括来自不同类型的不同对象的不同方法。典型的委托与事件的使用如下:
public delegate void PrintName(string name);//声明了一个委托类型
public class DelegateExample : MonoBehaviour
{
public event PrintName printName;//将委托类型作为事件实例化
void print(string name, PrintName method)//将委托类型作为函数参数的示例
{
method(name);
}
private void Start()
{
printName += PrintEnglishName;//使事件监听一个函数
printName += PrintChineseName;//使事件监听另一个函数
printName("UPiracy");//调用事件
print("UPiracy",printName);//通过函数调用事件
}
private void PrintEnglishName(string name)
{
Debug.LogFormat("My name is {0}.", name);
}
private void PrintChineseName(string name)
{
Debug.LogFormat("我的名字是{0}.", name);
}
}
Event
Event是属于UnityEngine命名空间的,它和event完全无关,是用于处理输入事件的类型,它主要负责Unity中的键盘、按键、鼠标输入以及GUI事件。
在生命周期表中,我们可以看到OnGUI事件在一帧中可以被调用很多次。在每一次键盘、鼠标、按键以及GUI输入发生时&