目录

🎮 MyFramework

一个偏传统游戏引擎开发思路的 Unity 游戏框架与工具链。

MyFramework 不是单纯封装 Unity API 的运行时框架,而是一套围绕实际商业项目开发流程整理出来的工程体系,重点关注:

  • 热更新分层
  • UI 代码生成
  • 配置表工具链
  • 网络协议代码生成
  • 资源管理
  • 对象池
  • 工程检查
  • 低 GC
  • 强生命周期控制
  • 客户端与服务器协作

框架从 0 开始设计并持续迭代多年,目前已经应用于:

  • 个人商业项目(MMORPG / 传奇类游戏)
  • 公司手游项目

支持平台:

✅ Windows ✅ Android ✅ iOS ✅ WebGL


🚀 核心亮点

MyFramework 最主要的特点不是某一个单独模块,而是一套比较完整的项目开发工作流。

1. UI 自动生成

通过在 UI Prefab 上配置需要访问的节点,自动生成 UI 脚本代码与注册逻辑,减少大量重复的查找节点和绑定代码。

UI Prefab
    ↓
UGUIGenerator
    ↓
生成 UI 成员变量
    ↓
生成节点查找代码
    ↓
业务逻辑代码

支持:

  • 单节点生成
  • 数组节点生成
  • 自动生成成员变量
  • 自动生成 assignWindow
  • 自动生成构造代码
  • 自动生成注册代码
  • 保留手写逻辑代码

2. 配置表工具链

使用 CSV 作为配置表格式,并配套自研表格编辑器。

配置表工具链支持:

  • 字段类型检查
  • 枚举合法性检查
  • ID 唯一性检查
  • 表格引用检查
  • 资源路径检查
  • 客户端代码生成
  • 服务器代码生成
  • 运行时代码检查逻辑生成

配置表编辑阶段即可发现大量错误,减少运行时问题。

CSV 配置表
    ↓
表格编辑器
    ↓
字段检查 / 引用检查 / 路径检查
    ↓
生成客户端表格代码
    ↓
生成服务器表格代码

3. 网络协议代码生成

根据协议配置自动生成客户端与服务器消息代码。

支持:

  • 消息类生成
  • 字段序列化生成
  • 字段反序列化生成
  • 消息注册代码生成
  • 客户端消息代码生成
  • 服务器消息代码生成
  • 手写逻辑代码保留
协议配置
    ↓
协议生成工具
    ↓
生成客户端消息代码
    ↓
生成服务器消息代码
    ↓
自动注册消息

4. 客户端 + 服务器配套

MyFramework 有配套服务器框架:

https://github.com/ZHOURUIH/MyServerFramework

客户端与服务器可以共享协议生成、配置表生成等工具链,适合需要长期维护的中大型项目。


5. 热更新分层

框架代码按照是否可热更进行了明确分层。

Frame_Base      -> 不可热更,最基础的框架代码
Frame_Game      -> 不可热更,项目非热更代码的框架
Game            -> 不可热更,项目应用层启动逻辑
Frame_HotFix    -> 可热更,框架层热更代码
HotFix          -> 可热更,项目应用层热更代码

依赖关系大致为:

Frame_Base -> Frame_HotFix -> HotFix
Frame_Base -> Frame_Game   -> Game
Game       -> HotFix

这种分层方式可以让框架层和业务层都有较高的热更新能力,同时又保留必要的启动稳定性。


📌 项目验证情况

项目 状态
持续迭代 5+ 年
当前作者项目 Unity 版本 Unity 6000.2
推荐 Unity 版本 Unity 2022.3 LTS 或更高
已用于个人 MMORPG 项目
已用于公司手游项目
客户端项目规模 20万+ 行
服务端项目规模 20万+ 行
GitHub Star 596+

✨ 项目特色

🔥 HybridCLR 热更新

集成 HybridCLR。

支持:

  • Frame 层热更新
  • Game 层热更新
  • 大部分业务逻辑热更新

除启动和热更新下载逻辑外,大部分代码都可以参与热更新。


🔒 Obfuz 混淆

集成 Obfuz。

支持:

  • 符号混淆
  • 字符串加密
  • 代码保护

用于提升发布后的代码安全性。


🖥 UI 框架

提供完整 UI 封装,避免业务层直接访问 Unity 原生组件。

支持:

  • 无限滚动列表
  • CheckBox
  • Slider
  • Progress
  • DropList
  • 长按
  • 双击
  • 拖拽
  • 点击穿透
  • UI 对象池
  • UI 代码自动生成

框架尽量不依赖 UGUI 的锚点和自动布局组件,而是倾向于通过代码显式控制 UI 的位置、尺寸、显示状态和输入逻辑。


🧭 自定义输入系统

不使用 UGUI 默认 EventSystem 作为主要输入派发方式,而是自己实现统一输入检测。

支持:

  • 鼠标输入
  • 触摸输入
  • 点击
  • 双击
  • 长按
  • 拖拽
  • 点击穿透

部分 Unity 原生组件仍然可以按需使用 EventSystem,例如 ScrollRect。


📦 资源管理系统

统一封装资源访问。

支持:

  • AssetDatabase
  • AssetBundle
  • 同步加载
  • 异步加载

业务层无需关心资源来自编辑器还是 AssetBundle。


🌐 网络框架

支持:

  • TCP
  • UDP
  • WebSocket
  • HTTP

提供:

  • 消息自动注册
  • 消息代码自动生成
  • Json 序列化
  • 字节序列化
  • 按位序列化

其中按位序列化可进一步降低网络带宽占用。


⚙ 命令系统

命令系统用于封装具有完整逻辑意义的事件。

它可以用于:

  • 逻辑封装
  • 模块通信
  • UI 与逻辑解耦
  • 延迟执行
  • 主线程调度
  • 日志追踪

示例:

数据改变
    ↓
发送命令
    ↓
更新数据
    ↓
刷新界面
    ↓
网络同步

调用方只需要关心触发了什么事件,而不需要关心事件内部涉及哪些模块。


🧩 组件系统

部分逻辑使用组件思想进行组织,通过组合代替复杂继承。

Character
 ├─ ComponentA
 ├─ ComponentB
 └─ ComponentC

适合拆分可复用、可独立更新的功能逻辑。


🎬 特效系统

基于 PrefabPool 抽象出 EffectPool。

支持:

  • Prefab 对象池
  • Effect 对象池
  • QuickEffect 快速特效
  • Trail 管理
  • 生命周期管理
  • 按标签批量销毁

QuickEffect 适用于非循环、不带拖尾、需要频繁同时播放的粒子特效。


🧰 基础工具库

包含大量基础工具函数,例如:

  • BinaryUtility
  • StringUtility
  • MathUtility
  • FileUtility
  • TimeUtility
  • UnityUtility

同时提供大量 Scope 设计,用于实现类似 C++ RAII 的自动释放与状态恢复。


🧪 单元测试

框架包含大量单元测试,主要覆盖:

  • 序列化
  • 字符串工具
  • 数学工具
  • 文件工具
  • 容器扩展
  • Scope
  • 命令系统
  • 事件系统
  • 场景流程
  • UI 基础逻辑
  • 网络消息

这部分测试用于保证框架中的基础工具函数和核心逻辑长期稳定。


🛠 工程检查工具

Editor 中提供了大量项目检查和辅助工具,例如:

  • 代码规范检查
  • 空行检查
  • 空格检查
  • 单行长度检查
  • 命名规范检查
  • 函数排版检查
  • 注释检查
  • 命令命名规范检查
  • 热更引用检查
  • 资源引用查找
  • 未引用资源检查
  • 材质引用丢失检查
  • 图集引用检查
  • 多语言文本检查
  • UI 适配组件检查
  • 资源文件名规范检查
  • 预设根节点变换检查
  • 热更与非热更资源互相引用检查

这些工具主要用于减少大型项目长期维护过程中的隐性错误。


📋 功能概览

模块 状态
HybridCLR
Obfuz
UI 框架
UI 代码生成
自定义输入系统
资源管理
AssetBundle
TCP
UDP
WebSocket
HTTP
网络消息生成
Json 序列化
字节序列化
按位序列化
CSV 配置
配置代码生成
SQLite
类对象池
List 对象池
GameObject 对象池
Prefab 对象池
Effect 对象池
Tween 系统
多语言
新手引导 部分拆分
Google 登录 待整理
Google 支付 待整理
AAB PAD 打包流程 待整理

📈 与常见框架的定位差异

不同框架的目标并不相同,下表只用于说明设计取向,不代表优劣对比。

方向 MyFramework GameFramework ET TEngine
主要定位 Unity 客户端框架 + 热更分层 + 工程工具链 + Demo Unity 游戏框架 客户端/服务器一体化架构 Unity 工程化框架
设计风格 强控制、强规范、偏传统引擎/C++ 风格 模块化、通用型 Actor / 分布式思路 更贴近 Unity 生态
热更新分层 Frame_HotFix / HotFix 独立分层 通常由项目自行接入 依项目方案而定 通常支持 HybridCLR
UI 代码生成 内置 UGUIGenerator 非核心重点 依项目实现 通常有相关工具
协议代码生成 支持客户端与服务器消息生成 非核心重点 核心能力之一 依项目实现
配置表工具链 表格编辑器 + 检查 + 客户端/服务器代码生成 依项目扩展 依项目扩展 通常有相关工具
资源/代码检查工具 内置较多检查菜单 依项目扩展 依项目扩展 工程化工具较多
适合方向 RPG / MMO / 长期商业项目 / 强规范团队 通用 Unity 项目 前后端一体化项目 Unity 商业项目快速开发

🎯 设计理念

MyFramework 并不是为了追求最新潮的架构,也不是为了追求最少代码量。

它更关注:

1. 可维护

代码定位清晰,问题出现后能够快速查找。

2. 可控

尽量减少对 Unity 自动行为和第三方插件的过度依赖。

框架中很多地方倾向于显式执行,而不是依赖隐藏生命周期。

3. 可落地

优先解决商业项目中真正会遇到的问题:

  • 性能
  • GC
  • 热更新
  • 工具链
  • 资源管理
  • UI 开发效率
  • 客户端与服务器协议一致性

4. 长期维护

框架更偏向传统游戏引擎开发思路,强调明确的生命周期、明确的调用关系和统一的代码风格。


📁 主要目录结构

Assets
├── Editor
│   ├── Frame
│   │   ├── ComponentEditor
│   │   ├── EditorWindow
│   │   ├── Menu
│   │   └── Tween
│   └── Game
├── EditorRes
└── Scripts
    ├── Frame_Base
    ├── Frame_Game
    ├── Frame_HotFix
    ├── Game
    └── HotFix

Scripts 分层说明

目录 说明
Frame_Base 不可热更,最基础的框架代码
Frame_Game 不可热更,项目非热更代码的框架
Game 不可热更,项目应用层启动逻辑
Frame_HotFix 可热更,框架层热更代码
HotFix 可热更,项目应用层热更代码

🚀 快速开始

环境

推荐:

Unity 2022.3 LTS 或更高版本

作者当前项目使用:

Unity 6000.2

启动

打开项目后无需额外配置,直接按:

F5

即可启动游戏。

启动场景为:

Start.unity

💬 社区交流

欢迎交流 Unity 游戏开发、框架设计、客户端开发、服务器开发等相关内容。

渠道 地址
QQ交流群 805116283(MyFramework 官方交流群)
GitHub Issues https://github.com/ZHOURUIH/MyFramework/issues
GitHub Discussions 暂未开启

群内主要讨论:

  • Unity 开发
  • MyFramework 使用
  • MyServerFramework 使用
  • HybridCLR
  • 游戏架构设计
  • MMO 开发
  • 网络同步
  • 配置表工具链

📖 文档

详细说明请查看文档目录:

https://github.com/ZHOURUIH/MyFramework/tree/master/文档


🖥 配套服务器框架

服务器项目:

https://github.com/ZHOURUIH/MyServerFramework

支持:

  • TCP
  • UDP
  • HTTP
  • SQLite
  • MySQL
  • 消息自动生成

与客户端框架配套使用。


⭐ Star

如果这个项目对你有帮助,欢迎点一个 Star ⭐

你的支持会让我持续完善框架。


微信群二维码
扫码加入微信群,欢迎交流框架使用、工具链、热更新、游戏开发等内容

License

MIT

关于
115.3 MB
邀请码
    Gitlink(确实开源)
  • 加入我们
  • 官网邮箱:gitlink@ccf.org.cn
  • QQ群
  • QQ群
  • 公众号
  • 公众号

版权所有:中国计算机学会技术支持:开源发展技术委员会
京ICP备13000930号-9 京公网安备 11010802047560号