# MyFramework **Repository Path**: hssing/MyFramework ## Basic Information - **Project Name**: MyFramework - **Description**: Unity 商用级别开发框架,经过了多年经验沉淀.一个在unity上使用的网络游戏客户端开发框架,为unity所有使用方式提供完善的封装和管理,只需要专注于游戏逻辑的编写 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2026-07-01 - **Last Updated**: 2026-07-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎮 MyFramework 一个偏传统游戏引擎开发思路的 Unity 游戏框架与工具链。 MyFramework 不是单纯封装 Unity API 的运行时框架,而是一套围绕实际商业项目开发流程整理出来的工程体系,重点关注: * 热更新分层 * UI 代码生成 * 配置表工具链 * 网络协议代码生成 * 资源管理 * 对象池 * 工程检查 * 低 GC * 强生命周期控制 * 客户端与服务器协作 框架从 0 开始设计并持续迭代多年,目前已经应用于: * 个人商业项目(MMORPG / 传奇类游戏) * 公司手游项目 支持平台: ✅ Windows ✅ Android ✅ iOS ✅ WebGL --- ## 📦 安装与使用 MyFramework 已支持通过 Unity Package Manager 以 Git 插件形式安装。 ### 1. 通过 Git URL 安装 推荐使用发布分支安装,用户不需要手动指定具体版本号。 GitHub: ```text https://github.com/ZHOURUIH/MyFramework.git?path=/Packages/com.zhourui.myframework ``` Gitee: ```text https://gitee.com/inothingtodo/MyFramework.git?path=/Packages/com.zhourui.myframework ``` 安装方式: ```text Window Package Manager + Install package from git URL... ``` 然后输入上面的 Git URL。 > GitHub 访问不稳定时,可以使用 Gitee 地址。 --- ### 2. 初始化工程 安装插件后,新建工程中还没有默认启动场景、业务入口脚本和运行时配置文件,需要执行初始化菜单。 普通初始化: ```text MyFramework/初始化/初始化框架 ``` 带 HybridCLR + Obfuz 的初始化: ```text MyFramework/初始化/初始化框架+HybridCLR+Obfuz ``` 初始化会自动处理: ```text 复制 ProjectTemplate~ 中的默认项目文件 生成 Assets/Resources/Scene/start.unity 生成 Assets/Resources/Settings/FrameSettings.asset 生成 ProjectSettings/MyFrameworkSettings.asset 将 GameEntry 脚本挂接到 start.unity 的 GameEntry 节点 将 start.unity 添加到 Build Settings ``` 如果选择 HybridCLR + Obfuz 初始化,还会自动处理: ```text 安装 HybridCLR 安装 Obfuz 添加 USE_HYBRID_CLR / USE_OBFUZ 宏 设置生成代码输出目录到 Assets/Scripts/AutoGenerated ``` --- ### 3. 输入系统设置 框架和默认启动场景仍然会使用部分旧输入接口,例如 `UnityEngine.Input` 和 `StandaloneInputModule`。 如果工程启用了 Input System Package,并且运行时报: ```text You are trying to read Input using the UnityEngine.Input class... ``` 需要在 Unity 中手动设置: ```text Project Settings Player Other Settings Active Input Handling = Both ``` 修改后通常需要重启 Unity 编辑器才能完全生效。 --- ## 🚀 核心亮点 MyFramework 最主要的特点不是某一个单独模块,而是一套比较完整的项目开发工作流。 ### 1. UI 自动生成 通过在 UI Prefab 上配置需要访问的节点,自动生成 UI 脚本代码与注册逻辑,减少大量重复的查找节点和绑定代码。 ```text UI Prefab ↓ UGUIGenerator ↓ 生成 UI 成员变量 ↓ 生成节点查找代码 ↓ 业务逻辑代码 ``` 支持: * 单节点生成 * 数组节点生成 * 自动生成成员变量 * 自动生成 assignWindow * 自动生成构造代码 * 自动生成注册代码 * 保留手写逻辑代码 --- ### 2. 配置表工具链 使用 CSV 作为配置表格式,并配套自研表格编辑器。 配置表工具链支持: * 字段类型检查 * 枚举合法性检查 * ID 唯一性检查 * 表格引用检查 * 资源路径检查 * 客户端代码生成 * 服务器代码生成 * 运行时代码检查逻辑生成 配置表编辑阶段即可发现大量错误,减少运行时问题。 ```text CSV 配置表 ↓ 表格编辑器 ↓ 字段检查 / 引用检查 / 路径检查 ↓ 生成客户端表格代码 ↓ 生成服务器表格代码 ``` --- ### 3. 网络协议代码生成 根据协议配置自动生成客户端与服务器消息代码。 支持: * 消息类生成 * 字段序列化生成 * 字段反序列化生成 * 消息注册代码生成 * 客户端消息代码生成 * 服务器消息代码生成 * 手写逻辑代码保留 ```text 协议配置 ↓ 协议生成工具 ↓ 生成客户端消息代码 ↓ 生成服务器消息代码 ↓ 自动注册消息 ``` --- ### 4. 客户端 + 服务器配套 MyFramework 有配套服务器框架: https://github.com/ZHOURUIH/MyServerFramework 客户端与服务器可以共享协议生成、配置表生成等工具链,适合需要长期维护的中大型项目。 --- ### 5. 热更新分层 框架代码按照是否可热更进行了明确分层。 ```text Frame_Base -> 不可热更,最基础的框架代码 Frame_Game -> 不可热更,项目非热更代码的框架 Game -> 不可热更,项目应用层启动逻辑 Frame_HotFix -> 可热更,框架层热更代码 HotFix -> 可热更,项目应用层热更代码 ``` 依赖关系大致为: ```text 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 与逻辑解耦 * 延迟执行 * 主线程调度 * 日志追踪 示例: ```text 数据改变 ↓ 发送命令 ↓ 更新数据 ↓ 刷新界面 ↓ 网络同步 ``` 调用方只需要关心触发了什么事件,而不需要关心事件内部涉及哪些模块。 --- ### 🧩 组件系统 部分逻辑使用组件思想进行组织,通过组合代替复杂继承。 ```text 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 形式组织,框架代码位于: ```text 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~ | 初始化工程时复制到用户工程的模板文件 | 安装插件后,用户工程中由初始化菜单生成项目入口和默认文件: ```text 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 | 运行时框架配置 | --- ## 🚀 快速开始 ### 环境 推荐: ```text Unity 2022.3 LTS 或更高版本 ``` 作者当前项目使用: ```text Unity 6000.2 ``` ### 安装 在 Package Manager 中通过 Git URL 安装: ```text https://github.com/ZHOURUIH/MyFramework.git?path=/Packages/com.zhourui.myframework#release ``` 国内访问 GitHub 不稳定时,可以使用 Gitee: ```text https://gitee.com/inothingtodo/MyFramework.git?path=/Packages/com.zhourui.myframework#release ``` ### 初始化 安装完成后执行: ```text MyFramework/初始化/初始化框架 ``` 需要同时安装 HybridCLR + Obfuz 时执行: ```text MyFramework/初始化/初始化框架+HybridCLR+Obfuz ``` 初始化完成后,默认启动场景为: ```text Assets/Resources/Scene/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 * 消息自动生成 与客户端框架配套使用。 --- ## 📖 通用工具的源码 https://github.com/ZHOURUIH/MyFramework_Tool --- ## ⭐ Star 如果这个项目对你有帮助,欢迎点一个 Star ⭐ 你的支持会让我持续完善框架。 ---