1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/xianfengkeji-XFGameFramework

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
AddEvent.md 2.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
LIXUELIAO\lixueliao Отправлено 24.11.2024 08:54 6922cb5

EventManager.AddEvent

方法:

public static void AddEvent(string event_name, XFEvent callback)

说明:

注册事件(注册没有参数的回调)

参数

名称 说明
eventName 事件名称
callback 回调

代码示例:


using UnityEngine;

public class TestEventManager : MonoBehaviour
{
   private void Start() 
   {
       // 注册事件
       EventManager.AddEvent("OnUserInfoChange", OnUserInfoChange);    
   }

   private void OnUserInfoChange()
   {
       // TODO
   }
}

重载方法:

public static void AddEvent(int event_name_hash, XFEvent callback)

说明:

注册事件(回调函数没有参数)

事件名称为int类型, 效率更高

参数

名称 说明
event_name_hash 事件名称的hash值
callback 回调

重载方法2:

public static void AddEvent<T1>(string event_name, XFEvent<T1> callback)

说明:

注册事件(回调函数1个参数)

*注: 注册的回调函数的参数,必须与触发事件传递的参数保持一致,否则会触发异常!

参数

名称 说明
T1 回调函数的参数类型
event_name 事件名称
callback 回调

代码示例:


using UnityEngine;

public class TestEventManager : MonoBehaviour
{
   private void Start() 
   {
       // 注册事件 (注册有一个参数 且 类型为int的回调)
       EventManager.AddEvent<int>("OnUserInfoChange", OnUserInfoChange);    
   }

   private void OnUserInfoChange(int a)
   {
       // TODO
   }
}

特别说明:

回调最多支持7个参数,如果回调参数超过7建议封装成类或结构体进行传递,其余数量的参数回调用法与上面代码示例基本一致!

需要注意的一点是,一个事件注册的回调类型必须保持一致,否则会触发异常! 如下:


using UnityEngine;

public class TestEventManager : MonoBehaviour
{
   private void Start() 
   {
       // 注册事件 (注册有一个参数 且 类型为int的回调)
       EventManager.AddEvent<int>("OnUserInfoChange", Callback1);    
       EventManager.AddEvent<float>("OnUserInfoChange", Callback2);   
       // 此时 OnUserInfoChange 这个事件注册了两个回调监听 , 但是第一个注册的回调参数类型为 int 第二个是float ,两个不一致, 所以在注册第二个的时候会触发异常
       // 同一个事件 , 只能注册一种类型的回调
   }

   private void Callback1(int a)
   {
       // TODO
   }

   private void Callback2(float a)
   {
       // TODO
   }
}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/xianfengkeji-XFGameFramework.git
git@api.gitlife.ru:oschina-mirror/xianfengkeji-XFGameFramework.git
oschina-mirror
xianfengkeji-XFGameFramework
xianfengkeji-XFGameFramework
master