Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
M

MyFramework

> 编程语言
Open source

Unity 商用级别开发框架,经过了多年经验沉淀.一个在unity上使用的网络游戏客户端开发框架,为unity所有使用方式提供完善的封装和管理,只需要专注于游戏逻辑的编写

833 stars0 likes0 views
WebsiteGitHub

About

Unity 商用级别开发框架,经过了多年经验沉淀.一个在unity上使用的网络游戏客户端开发框架,为unity所有使用方式提供完善的封装和管理,只需要专注于游戏逻辑的编写

MyFramework

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

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

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

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

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

支持平台:

✅ Windows ✅ Android ✅ iOS ✅ WebGL


安装与使用

MyFramework 已支持通过 Unity Package Manager 以 Git 插件形式安装。

1. 通过 Git URL 安装

推荐使用发布分支安装,用户不需要手动指定具体版本号。

GitHub:

https://github.com/ZHOURUIH/MyFramework.git?path=/Packages/com.zhourui.myframework

Gitee:

https://gitee.com/inothingtodo/MyFramework.git?path=/Packages/com.zhourui.myframework

安装方式:

Window
    Package Manager
        +
            Install package from git URL...

然后输入上面的 Git URL。

GitHub 访问不稳定时,可以使用 Gitee 地址。


2. 初始化工程

安装插件后,新建工程中还没有默认启动场景、业务入口脚本和运行时配置文件,需要执行初始化菜单。

普通初始化:

MyFramework/初始化/初始化框架

带 HybridCLR + Obfuz 的初始化:

MyFramework/初始化/初始化框架+HybridCLR+Obfuz

初始化会自动处理:

复制 ProjectTemplate~ 中的默认项目文件
生成 Assets/Resources/Scene/start.unity
生成 Assets/Resources/Settings/FrameSettings.asset
生成 ProjectSettings/MyFrameworkSettings.asset
将 GameEntry 脚本挂接到 start.unity 的 GameEntry 节点
将 start.unity 添加到 Build Settings

如果选择 HybridCLR + Obfuz 初始化,还会自动处理:

安装 HybridCLR
安装 Obfuz
添加 USE_HYBRID_CLR / USE_OBFUZ 宏
设置生成代码输出目录到 Assets/Scripts/AutoGenerated

3. 输入系统设置

框架和默认启动场景仍然会使用部分旧输入接口,例如 UnityEngine.Input 和 StandaloneInputModule。

如果工程启用了 Input System Package,并且运行时报:

You are trying to read Input using the UnityEngine.Input class...

需要在 Unity 中手动设置:

Project Settings
    Player
        Other Settings
            Active Input Handling = Both

修改后通常需要重启 Unity 编辑器才能完全生效。


核心亮点

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. 长期维护

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


主要目录结构

MyFramework 现在以 UPM Package 形式组织,框架代码位于:

Packages
└── com.zhourui.myframework
    ├── Runtime
    │   ├── Frame_Base
    │   ├── Frame_Game
    │   └── Frame_HotFix
    ├── Editor
    │   ├── Editor_Frame
    │   └── EditorRes_Frame
    ├── ProjectTemplate~
    ├── package.json
    └── README.md

Package 分层说明

目录 说明
Runtime/Frame_Base 不可热更,最基础的框架代码
Runtime/Frame_Game 不可热更,项目非热更代码的框架
Runtime/Frame_HotFix 可热更,框架层热更代码
Editor/Editor_Frame 框架编辑器工具与菜单
Editor/EditorRes_Frame 框架编辑器资源与辅助逻辑
ProjectTemplate~ 初始化工程时复制到用户工程的模板文件

安装插件后,用户工程中由初始化菜单生成项目入口和默认文件:

Assets
├── Resources
│   ├── Scene
│   │   └── start.unity
│   └── Settings
│       └── FrameSettings.asset
└── Scripts
    ├── AutoGenerated
    ├── Game
    └── HotFix

用户工程分层说明

目录 说明
Assets/Scripts/Game 不可热更,项目应用层启动逻辑
Assets/Scripts/HotFix 可热更,项目应用层热更代码
Assets/Scripts/AutoGenerated HybridCLR / Obfuz 等生成代码
Assets/Resources/Scene 默认启动场景
Assets/Resources/Settings 运行时框架配置

快速开始

环境

推荐:

Unity 2022.3 LTS 或更高版本

作者当前项目使用:

Unity 6000.2

安装

在 Package Manager 中通过 Git URL 安装:

https://github.com/ZHOURUIH/MyFramework.git?path=/Packages/com.zhourui.myframework#release

国内访问 GitHub 不稳定时,可以使用 Gitee:

https://gitee.com/inothingtodo/MyFramework.git?path=/Packages/com.zhourui.myframework#release

初始化

安装完成后执行:

MyFramework/初始化/初始化框架

需要同时安装 HybridCLR + Obfuz 时执行:

MyFramework/初始化/初始化框架+HybridCLR+Obfuz

初始化完成后,默认启动场景为:

Assets/Resources/Scene/start.unity

直接打开该场景运行即可。



塔防游戏 Demo

为了更直观地展示 MyFramework 在实际 Unity 项目中的使用方式,现已提供一个基于本框架开发的完整塔防游戏 Demo:

项目地址:

https://github.com/ZHOURUIH/MyFramework_TDDemo

MyFramework_TDDemo 不是单个功能的代码片段,而是一个按照 MyFramework 项目结构组织的完整 Unity 工程,可以用于了解框架从项目启动、场景切换到具体游戏业务的整体落地方式。

Demo 内容

Demo 当前实现了以 Rogue-like 为核心的塔防战斗玩法,主要包含:

  • 炮塔放置、交换和出售
  • 怪物波次生成
  • 地面与飞行怪物路线
  • 炮塔索敌与攻击
  • 子弹与伤害处理
  • 战斗网格与地图管理
  • 金币、经验和属性选择
  • 战斗状态、胜负与关卡流程

展示的框架能力

通过该 Demo 可以重点了解以下内容:

  • Game / HotFix / AutoGenerated 项目代码分层
  • HybridCLR 热更新工程结构
  • Obfuz 代码混淆接入
  • SceneProcedure 场景流程管理
  • UI 界面组织与代码自动生成
  • CSV 配置表及代码生成
  • 资源同步与异步加载
  • 炮塔、怪物、子弹等游戏对象的生命周期管理
  • 命令系统、事件系统和状态管理
  • 音效、特效与多语言模块的项目组织方式
  • MyFramework 各个系统与实际游戏业务之间的协作方式

运行 Demo

推荐使用:

Unity 2022.3 LTS

克隆项目:

git clone https://github.com/ZHOURUIH/MyFramework_TDDemo.git

使用 Unity 打开工程,等待 Package Manager 完成依赖加载后,打开启动场景:

Assets/Resources/Scene/start.unity

然后直接运行即可。

Demo 已经在 Packages/manifest.json 中配置 MyFramework、HybridCLR 和 Obfuz 等依赖,一般不需要再次手动导入框架。

Demo 主要用于展示 MyFramework 的项目结构、开发流程和实际使用方式。建议先运行 Demo 了解整体流程,再结合框架文档查看具体模块。


⚡ EasyECS 数据布局优化

MyFramework 中包含独立的 EasyECS 插件,用于在尽量保持普通 OOP 开发方式的前提下,将热点数据自动转换为更适合 CPU Cache 的 SoA(Structure of Arrays)存储布局。

EasyECS 不是 Unity Entities / DOTS 的替代品,也不是一套完整 ECS Framework。

它主要解决的是:

已有 OOP 项目不希望整体迁移 ECS,但又希望针对角色、怪物、子弹、位置、速度、战斗属性等大量热点数据进行 SoA 优化的问题。

普通 Struct 只需要添加 Attribute:

using EasyECS;

[ECS]
public struct RoleData
{
	public int mHP;
	public float mSpeed;
	public float mPositionX;
	public float mPositionY;
	[NotECS] public int mID;
	[NotECS] public int mModelID;
}

社区交流

欢迎交流 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
  • 消息自动生成

与客户端框架配套使用。


通用工具的源码

https://github.com/ZHOURUIH/MyFramework_Tool


⭐ Star

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

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


License

MIT

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

C#

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言