【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

相关推荐
solicitous19 小时前
学习了解充电桩协议OCPP-架构与拓扑
学习·充电桩
迷枫71219 小时前
DM8 读写分离集群学习总结:从部署规划到扩容排查
数据库·学习
Harm灬小海19 小时前
【云计算学习之路】学习Centos7系统:服务搭建(VSFTP)
linux·运维·服务器·学习·云计算
Ws_20 小时前
C# 学习 Day1
开发语言·学习·c#
z2005093020 小时前
【linux学习】linux工具篇(下)
linux·学习
星夜夏空9920 小时前
STM32单片机学习(17) —— 串口外设中断
stm32·单片机·学习
魔法阵维护师20 小时前
从零开发游戏需要学习的c#模块,第二十一章(精灵动画 —— 让角色走起来)
学习·游戏·c#
xian_wwq20 小时前
【学习笔记】探讨大模型应用安全建设系列6——合规备案:大模型备案与监管合规实操
笔记·学习·安全
xian_wwq20 小时前
【学习笔记】探讨大模型应用安全建设系列7——安全评测与红队测试
笔记·学习·安全
_李小白21 小时前
【android opencv学习笔记】Day 21: 形态学开运算与闭运算
android·opencv·学习