从零设计一套可复用的 Unity 手游框架:CGHGameFramework 架构实践
从零设计一套可复用的 Unity 手游框架CGHGameFramework 架构实践标签Unity · 游戏框架 · 热更新 · MMORPG · 客户端架构适合读者Unity 中高级客户端、主程/技术负责人、准备搭自研框架的同学说明本文基于本人主导落地的CGHGameFramework已在 MMO、卡牌养成、休闲棋牌多品类验证。文中代码为示意便于阅读。前言为什么又要「自研框架」做了十几年 Unity 客户端最怕的不是某个 API 不会用而是项目进入中后期后改邮件把战斗搞崩热更 DLL 误引用了UnityEngine真机加载直接挂UI 里写伤害公式和服务器对不上每个人一个XXXManager生命周期靠猜这些问题的根因往往不是「同事不行」而是边界没划清。架构设计 提前把问题关进小盒子别让它污染全局。CGHGameFramework 的目标很明确让组员只写业务主程维护基础设施同一套框架能支撑 MMO、卡牌、棋牌而不是每个品类重造轮子。一、四条设计原则原则含义落地框架 / 业务分离水电煤归框架装修归业务Assets/GameFramework/vsAssets/Game/框架程序集禁止引用Game.*Logic / View 分离可热更逻辑不碰引擎对象Logic 纯 C#View 只订阅事件做表现Entry Module统一生命周期禁止满天 Singleton全部实现IGameModule由GameFrameworkEntry驱动双热更管线代码与资源版本节奏不同HybridCLR 热更 DLLAB manifest 热更资源这四条看起来「常识」但只要有一条被破坏半年后的维护成本会指数上升。二、横向两层框架 vs 业务┌─────────────────────────────────────────┐ │ GameClient (Assets/Game/) │ ← 业务大厅 / Feature / 副本 / 牌桌 └──────────────────┬──────────────────────┘ │ 只调用 ↓ ┌──────────────────▼──────────────────────┐ │ CGHGameFramework (Assets/GameFramework/) │ ← 框架网络 / UI / 资源 / 同步 / 热更 └──────────────────┬──────────────────────┘ │ Unity Engine 服务器 CDN大白话框架 水电煤、电梯、消防——所有房间共用业务不能私改管道业务 各个商铺的装修——只能接水电不能自己挖天然气硬性红线禁止原因在框架里写业务 Panel框架被单项目绑死无法复用在业务里改NetworkManager源码升级框架变成 merge 地狱框架引用Game.*依赖倒置框架无法独立编译三、纵向分层从启动到像素玩家点图标到看见角色可以想成五层启动层 GameLauncher 合规 → remote_ops → 双热更 → 登录 → 进场景 游戏层 EntitySync / Room 玩法系统实体同步、房间 FSM、社交… Logic 层 LogicWorld 纯 C#「大脑」可热更的战斗/回合/棋牌规则 服务层 UI / Scene / Audio 看见、听见、切场景 基础设施 Network / Resource TCP、AB、配表 核心层 EventBus / Timer 事件、定时器、主线程派发记忆口诀越往下越通用、越稳定、越少改越往上越业务、越常改、越适合热更。四、唯一入口GameFrameworkEntry框架不靠「到处new Manager」而用一个总入口// 启动时GameLauncher / DriverGameFrameworkEntry.Init(GameMode.MMORPG);// 业务侧统一访问GameFrameworkEntry.UI.OpenAsyncMailPanel(ui/feature/mail/MailPanel);GameFrameworkEntry.Network.Send(newMailListReq());GameFrameworkEntry.EventBus.SubscribeMailUpdatedEvent(OnMailUpdated);GameFrameworkEntry.Resource.LoadAsyncGameObject(ui/...);为什么是 Entry Module生命周期可控Init → Update → Shutdown顺序固定新人友好不用猜 Network 谁创建的优先级EventBus 先于 Network 先于 UI减少空引用每个 Manager 实现同一契约publicinterfaceIGameModule{intPriority{get;}voidOnInit();voidOnUpdate(floatdeltaTime);voidOnShutdown();}Shutdown逆序执行避免「先拆 EventBus 后还有人发事件」。五、GameMode一套框架多种品类同一套 CGHGameFramework通过注册不同模块组合切换品类GameMode注册侧重典型产品MMORPGEntity / AOI / EntitySync / Session / 重连《王者争霸》CasualRoomManager 等不注册 MMO 同步轴《星辰少女》卡牌养成CardCasual 棋牌 Session如斗地主休闲棋牌矩阵关键洞察卡牌回合制不应硬套 EntitySync棋牌大厅不应背负城战 AOI。品类差异用「模块组合」表达而不是 fork 一整套框架。这也是后来能用同一底座铺多款棋牌/休闲的原因换的是 GameMode 与业务目录不是底层管道。六、Logic / View热更友好的战斗与玩法MMO 战斗若把公式写在MonoBehaviour里会遇到热更困难绑死场景对象难单测客户端「看起来打中」与服务器权威冲突我们的做法输入 / UI → LogicWorld纯 C#预检、镜像 HP/Buff、连招窗口 → 网络CastSkillReq → 服务器权威命中与结算 → DamageNotify → View播受击、飘字、特效可降级铁律Logic禁止引用UnityEngine保证 HybridCLR 热更边界清晰View禁止本地扣最终血量以 Notify 为准命中主路径用几何 AOI而不是城战里堆 PhysX Trigger人一多必炸棋牌同理DouDiZhuSession/ 未来的MahjongSession都是纯 C# 状态机牌桌 View 只订阅事件。七、双热更代码一条线资源一条线很多团队把「热更」说成「打个 AB」这是不精确的。代码热更HybridCLR资源热更AB产物raw.dll manifestAssetBundle manifest是否打 AB否是CDN/code/{Platform}//ab/{Platform}/节奏修逻辑、协议换皮、场景、特效iOS更谨慎可远程关闭通常放开启动顺序固定拉 remote_ops可熔断/回滚 → 代码热更 → 资源热更mandatory → 进登录 / 大厅 → 其余边玩边下上线安全热更不是「发得出去」就行必须「发错收得回」——remote_ops支持回滚版本、拉黑坏包、强制清缓存、关代码/资源热更。八、资源与内存加载契约比 API 更重要业务统一走GameFrameworkEntry.Resource.LoadAsyncT(logicalPath);// 用完GameFrameworkEntry.Resource.Release(logicalPath);配套能力逻辑路径业务不写物理 AB 名DeviceTier自动优先*_low变体引用计数 依赖序卸载公共包被占用时不会误卸MemoryManager按水位 Soft / Medium切场景 Loading 做异步 Hard含UnloadUnusedAssets长时在线内存上涨根因往往是只 Load 不 Release而不是「AB 下载到磁盘了」。磁盘缓存和运行内存要分开治理。九、网络状态同步为主的 MMO 路径《王者争霸》类项目我们选择状态同步 服务器权威而非大世界帧同步TCP Protobuf MsgIdEntitySyncSnapshot 缓冲插值 本地预测/校正断线Heartbeat → Reconnect →ResumeSession→权威 Snapshot 对齐状态同步下的「追进度」不是重放所有输入帧资产/关键操作ReliableRequestClientSeq幂等传输优化优先顺序通常是AOI / 可见集少发脏字段与降频少发协议瘦身与量化少带解包池化少解析再考虑 UDP/KCP 等通道品类需要时十、工具链把重复劳动左移主程价值很大一块是工具化Proto / Excel → C# CodegenProto / MsgId 校验冲突、缺失、字段号AB 增量 patch、边玩边下配置美术资源校验、机型分档发版菜单与渠道打包目标闭环改 Schema → 自动生成 → CI/校验门禁 → 人只写业务没有工具链的「架构漂亮」会在第三个版本被人力拖垮。十一、一张图看数据流邮件为例玩家点「邮件」 → UI.OpenAsync(MailPanel) → Network.Send(MailListReq) → 服务器 MailListResp → Handler → EventBus 发 MailUpdatedEvent → Panel 刷新列表VirtualList业务 Feature 推荐固定套路「六件套」思路Panel / Handler / 协议 / 配表 / 事件 / 入口。新人按目录找文件而不是问「这个功能写在哪」。十二、实践中的几点教训架构服务于约束不是炫技能让 10 人并行且热更可回滚比上新名词重要。品类复用靠模块开关不靠复制工程MMO / 卡牌 / 棋牌共用启动链与热更减的是「每款从零搭管道」的成本。线上问题靠机制不靠英雄remote_ops、崩溃守卫、内存水位、符号表决定你能不能在分钟级止血。AI 可以加速样板不能替代边界与验收骨架、单测、协议草稿可以交给 AI胡牌正确性、真机性能、上线权必须人来守门。结语CGHGameFramework 不是「又一个 Manager 集合」而是一套可复述的边界框架与业务谁改谁Logic 与 View 谁说了算代码与资源怎么分别热更、怎么回滚不同品类如何共用管道如果你也在搭客户端底座不妨先问自己四个问题改活动会不会必须动框架内核热更失败玩家能不能继续玩新人 30 秒能不能找到该改的文件城战卡了你能不能用 AOI/预算/分档解释而不是只说「优化一下」答得清架构就立得住。作者简介Unity 客户端主程 / 技术负责人11 年手游经验。主导 CGHGameFramework落地 MMORPG《王者争霸》、卡牌养成《星辰少女》及休闲棋牌矩阵等产品线。关注客户端工程化、双热更、状态同步与上线可运维性。转载请注明作者与出处。商业使用请联系作者。

相关新闻

Redis优化

Redis优化

Redis优化Redis 键与值优化KeyKey命名规范为什么不要使用超长KeyValue(值)底层编码BigKey 优化官方定义BigKey核心危害BigKey解决方案热点Key优化批处理优化MsetPipeline集群下的批处理服务端优化持久化配置慢查询命令及安全配置内存配置内存缓冲区集群最…

2026/7/23 22:46:33 阅读更多 →
D2D商业化初期的博弈:成本、价格与增长的“三重奏”

D2D商业化初期的博弈:成本、价格与增长的“三重奏”

任何一项颠覆性技术在走向大众市场的过程中,都不可避免地要经历商业化的阵痛期。手机直连卫星(D2D)也不例外。尽管前景广阔,但当前的D2D市场仍处于“高烧的预产期”,面临着成本偏高、用户价格敏感与增长预期之间的激烈…

2026/7/23 22:46:33 阅读更多 →
HarmonyOS7 传感器开发:加速度计做个摇一摇,原来这么简单

HarmonyOS7 传感器开发:加速度计做个摇一摇,原来这么简单

文章目录前言传感器能做什么权限声明加速度计接入摇一摇实现完整代码算法讲解采样率与功耗其他传感器速览写在最后前言 摇一摇,这个功能最早是微信搞出来的,结果成了移动端的经典交互。在 HarmonyOS7 上实现摇一摇,比我想象的简单多了——加…

2026/7/23 22:45:32 阅读更多 →

最新新闻

NTC 热敏电阻全解:计算、曲线读数、跨品牌替换一次讲透

NTC 热敏电阻全解:计算、曲线读数、跨品牌替换一次讲透

目录 前言 一、NTC 通用计算公式:全球行业完全统一 1. 标准 B 值指数公式(所有品牌通用) 2. 公式不会变,计算偏差只来自参数 3. 高精度补充公式(精密仪器专用) 二、NCU18WB473F6SRB 温度 - 阻值完整计…

2026/7/23 22:57:38 阅读更多 →
2026年绘资质延续人员社保要求

2026年绘资质延续人员社保要求

2026年测绘资质延续申报进入密集办理周期。依据《测绘资质管理办法》(2021年修订)及《测绘资质分类分级标准》,测绘资质延续审查已从形式审查转向实质审查,专业技术人员的社会保险缴纳一致性、劳动关系唯一性及人员结构动态维护成…

2026/7/23 22:57:38 阅读更多 →
2026最新指标测评|企业引入AI数字员工,团队如何筛选适配的服务商?

2026最新指标测评|企业引入AI数字员工,团队如何筛选适配的服务商?

随着大模型和AI Agent进入企业业务,越来越多公司开始尝试用AI辅助客服、销售、内容运营和经营分析。但进入实际部署阶段后,企业往往会发现:能对话、能生成内容,不等于能理解业务、执行任务并进入现有工作流程。 普通AI工具不了解…

2026/7/23 22:56:38 阅读更多 →
协程与 Android 生命周期:该何时取消、何时保留

协程与 Android 生命周期:该何时取消、何时保留

文章目录第 1 章 生命周期为什么约束协程第 2 章 lifecycleScope:短 UI 副作用踩坑第 3 章 viewModelScope 与 Fragment 取 VM踩坑第 4 章 repeatOnLifecycle:后台停止收集踩坑第 5 章 取消链:从 UI 到 Repository第 6 章 SupervisorJob 与并…

2026/7/23 22:56:38 阅读更多 →
机床测头撞了/测针断了,还有救吗?——分等级损伤评估与维修成本指南

机床测头撞了/测针断了,还有救吗?——分等级损伤评估与维修成本指南

测头撞了/测针断了,还有救吗?——分等级损伤评估与维修成本指南 编号:JCE-DOCG-WBQ260615 版本:V2.1 适用范围:数控机床(CNC加工中心)在线测量测头系统 适用品牌:雷尼绍(…

2026/7/23 22:56:38 阅读更多 →
从 Kimi K3 看 AI 创业终局:四层护城河与中小团队生存路径

从 Kimi K3 看 AI 创业终局:四层护城河与中小团队生存路径

Kimi K3重磅炸场!无数AI创业者无路可走?【摘要】通用大模型参数规模与综合能力高速迭代,垂直 AI 工具正面临同质化降维冲击。通过拆解工具、效率、业务、生态四层商业护城河框架,结合技术落地实践与产业案例,为 AI 创业…

2026/7/23 22:56:38 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻