【GameFramework框架学习】事件系统的使用

一、作用

用于各个模块之间的通信,实现各个模块之间的解耦

二、使用例子

1、自定义事件参数

csharp 复制代码
public class MyEventArgs : GameEventArgs
{
    public static readonly int EventId = typeof(MyEventArgs).GetHashCode();
    public override int Id => EventId;

    public string Message { get; private set; }

    public static MyEventArgs Create(string message)
    {
        var args = ReferencePool.Acquire<MyEventArgs>();
        args.Message = message;
        return args;
    }

    public override void Clear()
    {
        Message = null;
    }
}

2、订阅事件(在需要的地方)

csharp 复制代码
GF.Event.Subscribe(MyEventArgs.EventId, OnMyEvent);

//事件触发执行的函数
private void OnMyEvent(object sender, GameEventArgs e)
{
    var eventArgs = (MyEventArgs)e;
    Log.Info("收到消息:" + eventArgs.Message);
}

3、触发事件

csharp 复制代码
GameEntry.Event.Fire(this, MyEventArgs.Create("你好 Event!"));

4、取消事件

csharp 复制代码
GameEntry.Event.Unsubscribe(MyEventArgs.EventId, OnMyEvent);

三、扩展

TODO

相关推荐
野犬寒鸦1 小时前
从零起步学习并发编程 || 第七章:ThreadLocal深层解析及常见问题解决方案
java·服务器·开发语言·jvm·后端·学习
陈桴浮海1 小时前
【Linux&Ansible】学习笔记合集二
linux·学习·ansible
xhbaitxl1 小时前
算法学习day39-动态规划
学习·算法·动态规划
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
试着2 小时前
【huawei】机考整理
学习·华为·面试·机试
風清掦2 小时前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
Purple Coder2 小时前
基于CNN对YBCO超导块材孔隙研究
学习
wdfk_prog3 小时前
[Linux]学习笔记系列 -- [drivers][tty]sysrq
linux·笔记·学习
优橙教育3 小时前
通信行业四大热门岗位解析:谁才是数字时代的黄金赛道?
网络·学习·5g
西西学代码3 小时前
A---(1)
学习