unity游戏开发之自定义事件测试demo

时间:2022-02-18 14:20:28

上文中写了unity游戏开发自定义消息事件点击打开链接

下面是测试demo

第一,打卡unity,新建一个场景,然后新建一个空的游戏对象,如图中的EventObj

unity游戏开发之自定义事件测试demo

第二步,测试代码EventTest.as,直接拖拽给上面的空游戏对象EentObj

unity游戏开发之自定义事件测试demo

测试代码如下:

using UnityEngine;
using System.Collections;

public class EventTest : MonoBehaviour {

// Use this for initialization
void Start () {
//消息注册
EventMgr.Ins.AddEventListener (ECoreEventType.EID_DEMO_TEST, OnEventTestDemoHandler);

}

// Update is called once per frame
void Update () {

if (Input.GetKeyDown (KeyCode.A))
{
//消息派发
print("dispatch..");
EventMgr.Ins.DispatchCoreEvent(new CoreEvent(ECoreEventType.EID_DEMO_TEST,0));
}
if (Input.GetKeyDown (KeyCode.B))
{
EventMgr.Ins.DispatchCoreEvent(new CoreEvent(ECoreEventType.EID_DEMO_TEST,1));
}
if (Input.GetKeyDown (KeyCode.C))
{
EventMgr.Ins.DispatchCoreEvent(new CoreEvent(ECoreEventType.EID_DEMO_TEST,2));
}



}
//消息处理函数
void OnEventTestDemoHandler(CoreEvent evt)
{
if (evt.EventCode == 0)
{
print("you press A");
}
else if (evt.EventCode == 1)
{
print("you press B");
}
else if (evt.EventCode == 2)
{
//移除消息处理函数后,再按A 或者B键,消息将不在打印
print("Press C and remove this EventHandler");
EventMgr.Ins.RemoveEventListener(ECoreEventType.EID_DEMO_TEST,OnEventTestDemoHandler);
}


}
}

运行测试log如下

unity游戏开发之自定义事件测试demo

可以看出,当按下A,和B的时候,派发的消息被消息处理函数接收,并打印了相应信息。当按下C的时候,移除消息处理,在按下A的时候,消息处理函数中的打印语句没有执行