【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

相关推荐
SmalBox9 小时前
【节点】[FresnelEquation节点]原理解析与实际应用
unity3d·游戏开发·图形学
xiezhr11 小时前
米哈游36岁程序员被曝复工当晚猝死出租屋内
游戏·程序员·游戏开发
SmalBox1 天前
【节点】[DielectricSpecular节点]原理解析与实际应用
unity3d·游戏开发·图形学
开维游戏引擎2 天前
开维游戏引擎实例:飞机大战
游戏开发
SmalBox2 天前
【节点】[LinearBlendSkinning节点]原理解析与实际应用
unity3d·游戏开发·图形学
SmalBox3 天前
【节点】[ComputeDeformation节点]原理解析与实际应用
unity3d·游戏开发·图形学
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意4 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码4 天前
嵌入式学习路线
学习
毛小茛4 天前
计算机系统概论——校验码
学习