【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

相关推荐
lzj_pxxw12 小时前
W25Q64存储芯片 软件设计刚需常识
stm32·单片机·嵌入式硬件·mcu·学习
Slow菜鸟12 小时前
AI学习篇(四) | AI设计类Skills推荐清单(2026年)
人工智能·学习
念恒1230612 小时前
Python(列表进阶)
python·学习
QYQ_112714 小时前
嵌入式学习——杂项设备、Platform总线和设备树源文件
学习
wuxinyan12315 小时前
大模型学习之路03:提示工程从入门到精通(第三篇)
人工智能·python·学习
十安_数学好题速析16 小时前
【多选】曲线方程:四步避坑判断曲线类型
笔记·学习·高考
千寻girling16 小时前
五一劳动节快乐 [特殊字符][特殊字符][特殊字符]
java·c++·git·python·学习·github·php
波特率11520017 小时前
git指令学习
git·学习
eLIN TECE17 小时前
Golang 构建学习
开发语言·学习·golang
chase。17 小时前
【学习笔记】skrl: 模块化、灵活的强化学习库深度解析
笔记·学习