Unity游戏通用框架——事件的订阅和发布(观察者模式)

在游戏开发的基本思想中,逻辑与表现的分离极为重要,相互之间并不关心具体实现,只注册对应的事件,有事件发生时才调用相应的函数

事件管理器

csharp 复制代码
using System.Collections;
using System.Collections.Generic;

public class event_manager : Singletom<event_manager> {
    public delegate void on_event_handler(string name, object udata);
    
    private Dictionary<string, on_event_handler> event_listeners = new Dictionary<string,on_event_handler>();

    // 订阅者而言
    public void add_event_listener(string name, on_event_handler handler) {
        if (this.event_listeners.ContainsKey(name)) {
            this.event_listeners[name] += handler;
        }
        else {
            this.event_listeners.Add(name, handler);
        }
    }

    public void remove_event_listener(string name, on_event_handler handler) {
        if (!this.event_listeners.ContainsKey(name)) {
            return;
        }

        this.event_listeners[name] -= handler;
        if (this.event_listeners[name] == null) {
            this.event_listeners.Remove(name);
        }
    }
    // end 

    // 发布
    public void dispatch_event(string name, object udata) {
        if (!this.event_listeners.ContainsKey(name)) {
            return;
        }

        if (this.event_listeners[name] != null) {
            this.event_listeners[name](name, udata);
        }
    }
    // end 

}

使用

发布

csharp 复制代码
event_manager.Instance.dispatch_event("coin", (object)100);

订阅

csharp 复制代码
void on_coin_value(string name, object udata) {
    int coin = (int)udata;
    Debug.Log("coin = " + coin);
}
event_manager.Instance.add_event_listener("coin", this.on_coin_value);
相关推荐
提子拌饭1336 小时前
逛三园游戏——基于鸿蒙PC Electron框架实现
前端·javascript·游戏·华为·electron·鸿蒙
开开心心就好8 小时前
支持多显示器的Windows高效分屏工具
运维·python·科技·游戏·计算机外设·ocr·powerpoint
熊猫钓鱼>_>9 小时前
腾讯云 COS × WorkBuddy X skill:实现我的游戏项目资源管理自动化“龙虾”
游戏·自动化·腾讯云·agent·cos·skill·workbuddy
winlife_10 小时前
全程用 AI 做一款商业级手游 · EP1 地基:先搭框架层,不急着写玩法
unity·ai编程·游戏架构·mcp·框架设计·funplay
小贺儿开发12 小时前
Unity VideoPlayer 播放控制器
unity·编辑器·播放器·视频·工具·videoplayer·互动
上海云盾-小余16 小时前
游戏端口隐蔽防护:端口映射 + 高防集群拦截爆破实操指南
网络·安全·web安全·游戏
wgc2k19 小时前
Node.js游戏服务器项目移植 5-唯一 ID 生成方案
游戏·node.js
德迅云安全-甲锵19 小时前
浙江德迅云安全,游戏盾、高防 IP、安全加速 SCDN、高防服务器,头部产品推荐指南【2026增强版】
tcp/ip·安全·游戏
互联网科技看点20 小时前
FPS游戏鼠标终极对比:轻量化、低延迟与8K轮询率如何抉择?
游戏·计算机外设
独特的螺狮粉20 小时前
商品猜价格游戏 - 鸿蒙PC Electron框架完整技术实现指南
游戏·华为·electron·开源·harmonyos·鸿蒙