【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

相关推荐
JWASX2 分钟前
Java 转 go 学习 - 基本语法
学习·golang
让头发掉下来23 分钟前
Kettle学习-17作业的创建与定时调度
学习
小刘在重生~32 分钟前
CSS 零基础完整学习笔记|选择器|盒子模型|布局
css·笔记·学习
AOI小白新手上路1 小时前
韦东山《ARM 架构与编程》3-3 IMX6ULL 的 GPIO 操作方法 · 学习笔记
arm开发·学习·架构
浩瀚地学1 小时前
deepagents学习打卡day07
经验分享·笔记·python·学习·agent
Awh-1 小时前
ARM 裸机开发 DAY5 学习笔记
arm开发·笔记·学习
李游Leo2 小时前
HarmonyOS 7 + ArkUI + Adaptive Layout 学习笔记:折叠屏多形态布局适配与窗口状态响应机制【鸿蒙心迹】
笔记·学习·harmonyos
kyrie_sakura2 小时前
大模型学习6 -- 深度学习 1 概述和PyTorch
pytorch·深度学习·学习
传奇开心果编程2 小时前
【Flutter入门练中学】第3课:滚动与列表
android·学习·flutter·ui·ios
鑫鑫哥adam2 小时前
一个 1x1 贴图,是怎么炸掉整个热更包的?
unity3d·游戏开发