CustomEvent
事件系统是很有用的东西,很多项目里都会用到,但是 unity 里面的事件还是不够灵活。所以 UniWb 里还是有自己的一套事件系统
使用如下
// 注册事件
EventSystem.RegisterEvent(111, (a, b) =>
{
Debug.Log("111");
});
EventSystem.RegisterEvent("aa", (a, b) =>
{
Debug.Log("aa");
});
EventSystem.RegisterEvent(1.2, (a, b) =>
{
Debug.Log("1.2");
});
// 发送事件
EventSystem.SendEvent(111);
EventSystem.SendEvent("aa");
EventSystem.SendEvent(1.2f);
// 取消注册
EventSystem.UnRegisterEvent(111);
嗯,你也可以 注册其它类型的事件,这里涉及到一个装箱与拆箱的过程,所以呀,不要频繁发送事件,效率会没有直接调用高。
这里有个问题,就是我们很有可能会忘记 取消注册,所以提供下面注册方法
this.RegisterCustomEvent(111, (a, b) =>
{
Debug.Log("执行~~");
});
在 OnDestroy 的时候将会自动 取消掉注册。
MouseDownEvent / KeyDownEvent
为了更方便的监听 鼠标和键盘事件
// 注册单个键盘按下事件
this.RegisterKeyDownEvent(k =>
{
Debug.Log(k);
}, KeyCode.F);
// 注册多个键盘按下事件
this.RegisterKeyDownEvent(k =>
{
Debug.Log(k);
}, KeyCode.A, KeyCode.B);
// 注册鼠标左键按下事件
this.RegisterMouseDownEvent(k =>
{
Debug.Log(k);
}, MouseKeyCode.MouseLeft);
// 注册Axis 事件
this.RegisterAxisEvent(a =>
{
Debug.Log(a);
}, "Horizontal");
同时还有 KeyUpEvent ,KeyEvent 就不一一列举出来了,注册这些事件会在 ,OnDestroy 的时候将会自动 取消掉注册
更方便的去是用。