{"id":50886628,"url":"https://github.com/teammoirai/com.moirai.framework","last_synced_at":"2026-06-15T18:00:14.799Z","repository":{"id":363699453,"uuid":"1264497977","full_name":"TeamMoirai/com.moirai.framework","owner":"TeamMoirai","description":"Unity 开发框架，集成 HybridCLR 高性能热更、Obfuz 代码混淆加固、YooAssets 企业级资源管理方案。","archived":false,"fork":false,"pushed_at":"2026-06-12T00:58:56.000Z","size":4268,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T03:10:01.049Z","etag":null,"topics":["framework","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TeamMoirai.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-10T00:00:57.000Z","updated_at":"2026-06-12T01:48:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/TeamMoirai/com.moirai.framework","commit_stats":null,"previous_names":["lx34r/com.moirai.framework","teammoirai/com.moirai.framework"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/TeamMoirai/com.moirai.framework","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamMoirai%2Fcom.moirai.framework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamMoirai%2Fcom.moirai.framework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamMoirai%2Fcom.moirai.framework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamMoirai%2Fcom.moirai.framework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TeamMoirai","download_url":"https://codeload.github.com/TeamMoirai/com.moirai.framework/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TeamMoirai%2Fcom.moirai.framework/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34374146,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","unity"],"created_at":"2026-06-15T18:00:13.521Z","updated_at":"2026-06-15T18:00:14.775Z","avatar_url":"https://github.com/TeamMoirai.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Moirai Framework\n===\n\n[![Unity Version](https://img.shields.io/badge/Unity-2022.3%2B-blue.svg?style=flat-square)](https://unity3d.com/)\n[![Releases](https://img.shields.io/github/release/TeamMoirai/com.moirai.framework.svg?style=flat-square)](https://github.com/TeamMoirai/com.moirai.framework/releases)\n[![License](https://img.shields.io/github/license/TeamMoirai/com.moirai.framework?style=flat-square)](LICENSE)\n[![Issues](https://img.shields.io/github/issues/TeamMoirai/com.moirai.framework?style=flat-square)](https://github.com/TeamMoirai/com.moirai.framework/issues)\n[![Last Commit](https://img.shields.io/github/last-commit/TeamMoirai/com.moirai.framework?style=flat-square)](https://github.com/TeamMoirai/com.moirai.framework)\n[![Top Language](https://img.shields.io/github/languages/top/TeamMoirai/com.moirai.framework?style=flat-square)](https://github.com/TeamMoirai/com.moirai.framework)\n[![README](https://img.shields.io/badge/README-English-FFA500?style=flat-square)](https://github.com/TeamMoirai/com.moirai.framework/blob/main/README_EN.md)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/TeamMoirai/com.moirai.framework)\n\n## 📖 简介\n\n**Moirai Framework** 是一个简单（新手友好、开箱即用）且强大的 Unity 框架全平台解决方案。\n\n### ✨ 核心特性\n\n- 🚀 **开箱即用** - 5 分钟即可上手整套开发流程，代码整洁，思路清晰\n- 🔥 **高性能** - 基于 UniTask 的异步系统，零 GC 事件分发，严格的内存管理\n- 🧩 **高内聚低耦合** - 模块化设计，可轻松移除或替换不需要的模块\n- 🔄 **热更新支持** - 集成 HybridCLR，全平台热更新流程已跑通\n- 📦 **资源管理** - 集成 YooAsset，支持 LRU、ARC 缓存策略，自动资源释放\n- 📊 **配置表系统** - 集成 Luban，支持懒加载、异步加载、同步加载\n- 🎨 **UI 框架** - 商业化 UI 开发流程，支持代码自动生成\n- 🌍 **全平台支持** - Windows、Android、iOS、WebGL、微信小游戏等\n\n---\n\n\u003c!-- START doctoc generated TOC please keep comment here to allow auto update --\u003e\n\u003c!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\u003e\n## 📚 目录\n\n- [🚀 快速开始](#-%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B)\n  - [环境要求](#%E7%8E%AF%E5%A2%83%E8%A6%81%E6%B1%82)\n  - [快速上手](#%E5%BF%AB%E9%80%9F%E4%B8%8A%E6%89%8B)\n    - [下载安装](#%E4%B8%8B%E8%BD%BD%E5%AE%89%E8%A3%85)\n      - [方式一：一键安装（推荐）](#%E6%96%B9%E5%BC%8F%E4%B8%80%E4%B8%80%E9%94%AE%E5%AE%89%E8%A3%85%E6%8E%A8%E8%8D%90)\n      - [方式二：UPM 安装](#%E6%96%B9%E5%BC%8F%E4%BA%8Cupm-%E5%AE%89%E8%A3%85)\n      - [方式三：手动安装](#%E6%96%B9%E5%BC%8F%E4%B8%89%E6%89%8B%E5%8A%A8%E5%AE%89%E8%A3%85)\n    - [初始设置](#%E5%88%9D%E5%A7%8B%E8%AE%BE%E7%BD%AE)\n      - [场景打包](#%E5%9C%BA%E6%99%AF%E6%89%93%E5%8C%85)\n      - [配置表模块](#%E9%85%8D%E7%BD%AE%E8%A1%A8%E6%A8%A1%E5%9D%97)\n    - [快捷功能](#%E5%BF%AB%E6%8D%B7%E5%8A%9F%E8%83%BD)\n- [🏗️ 架构](#-%E6%9E%B6%E6%9E%84)\n  - [模块系统](#%E6%A8%A1%E5%9D%97%E7%B3%BB%E7%BB%9F)\n  - [启动流程](#%E5%90%AF%E5%8A%A8%E6%B5%81%E7%A8%8B)\n- [📦 核心模块](#-%E6%A0%B8%E5%BF%83%E6%A8%A1%E5%9D%97)\n  - [Resource — 资源管理](#resource--%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86)\n  - [UI — 界面框架](#ui--%E7%95%8C%E9%9D%A2%E6%A1%86%E6%9E%B6)\n  - [Audio — 音频系统](#audio--%E9%9F%B3%E9%A2%91%E7%B3%BB%E7%BB%9F)\n  - [Localization — 本地化](#localization--%E6%9C%AC%E5%9C%B0%E5%8C%96)\n  - [Events — 事件系统](#events--%E4%BA%8B%E4%BB%B6%E7%B3%BB%E7%BB%9F)\n  - [FSM — 有限状态机](#fsm--%E6%9C%89%E9%99%90%E7%8A%B6%E6%80%81%E6%9C%BA)\n  - [Procedure — 流程管理](#procedure--%E6%B5%81%E7%A8%8B%E7%AE%A1%E7%90%86)\n  - [Input — 输入系统](#input--%E8%BE%93%E5%85%A5%E7%B3%BB%E7%BB%9F)\n  - [Save — 存档系统](#save--%E5%AD%98%E6%A1%A3%E7%B3%BB%E7%BB%9F)\n  - [Scheduler — 调度器](#scheduler--%E8%B0%83%E5%BA%A6%E5%99%A8)\n- [🧰 核心工具](#-%E6%A0%B8%E5%BF%83%E5%B7%A5%E5%85%B7)\n  - [ObjectPool — 对象池](#objectpool--%E5%AF%B9%E8%B1%A1%E6%B1%A0)\n  - [MemoryPool — 内存池](#memorypool--%E5%86%85%E5%AD%98%E6%B1%A0)\n  - [Singleton — 单例系统](#singleton--%E5%8D%95%E4%BE%8B%E7%B3%BB%E7%BB%9F)\n  - [GameConfig — 配表管理](#gameconfig--%E9%85%8D%E8%A1%A8%E7%AE%A1%E7%90%86)\n  - [GameLog — 日志系统](#gamelog--%E6%97%A5%E5%BF%97%E7%B3%BB%E7%BB%9F)\n  - [GameSettings — 游戏设置](#gamesettings--%E6%B8%B8%E6%88%8F%E8%AE%BE%E7%BD%AE)\n  - [DataStructure — 数据结构](#datastructure--%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84)\n- [🛠️ 编辑器工具](#-%E7%BC%96%E8%BE%91%E5%99%A8%E5%B7%A5%E5%85%B7)\n- [📁 推荐项目结构](#-%E6%8E%A8%E8%8D%90%E9%A1%B9%E7%9B%AE%E7%BB%93%E6%9E%84)\n- [🤝 贡献与支持](#-%E8%B4%A1%E7%8C%AE%E4%B8%8E%E6%94%AF%E6%8C%81)\n  - [🌟 生态依赖](#-%E7%94%9F%E6%80%81%E4%BE%9D%E8%B5%96)\n  - [👥 贡献者](#-%E8%B4%A1%E7%8C%AE%E8%80%85)\n\n\u003c!-- END doctoc generated TOC please keep comment here to allow auto update --\u003e\n\n## 🚀 快速开始\n\n### 环境要求\n\n- **Unity 版本**: 2022.3.x（推荐）或更高\n\n- **开发环境**: .NET 4.x\n\n- **支持平台**: Windows、OSX、Android、iOS、WebGL\n\n### 快速上手\n\n#### 下载安装\n\n##### 方式一：一键安装（推荐）\n\n1. 通过以下任一方式安装 **Framework Installer**：\n\n   - 在 **Window/Package Manager** 中，通过 Git URL 安装：\n\n      ```bash\n      https://github.com/TeamMoirai/com.moirai.framework.git#installer\n      ```\n      \u003cimg src=\"Documentation~\\src\\quick-start-1.png\" alt=\"quick-start-scoped-registries\" /\u003e\n   \n   - 克隆 `install` 分支至工程目录（Assets/...）：\n\n      ```bash\n      git clone --branch installer --single-branch https://github.com/TeamMoirai/com.moirai.framework.git Scripts/Installer\n      ```\n   \n2. 回到 Unity，手动执行菜单 `Tools/Settings/Install Framework`\n\n3. 安装完成后可安全删除该脚本\n\n##### 方式二：UPM 安装\n\n1. 在 **Project Settings/Unity Package Manager** 中，手动添加 **Scoped Registry**：\n\n   ```text\n   // 输入以下内容（国际版）\n   Name: Open UPM\n   URL: https://package.openupm.com\n   Scope(s): com.cysharp\n   \t\t  com.tuyoogame\n   \t\t  com.moirai\n   ```\n\n   \u003cimg src=\"Documentation~\\src\\quick-start-2-scoped-registries.png\" alt=\"quick-start-scoped-registries\" /\u003e\n\n2. 在 **Window/Package Manager** 中，选中 **Moirai Framework**，点击 **Install** 进行安装：\n\n    \u003cimg src=\"Documentation~\\src\\quick-start-2-package-detail.png\" alt=\"quick-start-package-detail\" /\u003e\n\n3. \u003ca id=\"manual-import\"\u003e\u003c/a\u003e手动复制 `工程根目录/Library/PackageCach/com.moirai.framework@xxx/Templates~/` 下 **@Requirements** 文件夹内的所有内容到 **工程根目录/Assets** 目录。\n\n    （可选）根据需要选择同目录下合适的模板复制到工程，一般选择 **NormalTemplate** 即可。\n\n##### 方式三：手动安装\n\n1. 以下获取框架的方式任选其一：\n\n   - 在 **Window/Package Manager** 中，通过 Git URL 安装：\n\n     ```\n     https://github.com/TeamMoirai/com.moirai.framework.git\n     ```\n\n   - 在发布的Release版本中，选择最新版本下载 **Source Code** 压缩包。\n\n2. 参见 **[快速开始 - 快速上手 - 下载安装 - 方式二：UPM 安装 - 3](#manual-import)**。\n\n---\n\n#### 初始设置\n\n##### 场景打包\n\n将 `Scenes/main.unity` 加入打包\n\n- Unity6.0+： `File -\u003e Build Profiles -\u003e SceneList`\n- Unity6.0-：`File -\u003e Build Settings -\u003e Scene In Build`\n\n##### 配置表模块\n\n   - 选择 `Tools/Settings/ConfigTableSettings` ，点击 `生成 Config 到指定目录`。\n   - 初次生成时，导出前先执行 **build-luban** 编译或者自行导入 Luban至配置表根目录。\n   - 如果移动配置表目录，则需要在  `Tools/Settings/ConfigTableSettings` 手动更新——`重定向 Config 目录`\n\n---\n\n#### 快捷功能\n\n1. **编辑器模式运行**\n   - 选择顶部菜单栏 `YooAsset/Editor PlayMode` 编辑器下的模拟模式\n   - 点击 `Play` 开始运行\n2. **打包运行**（热更新流程）\n   - 运行菜单 `HybridCLR/Install...` 安装 HybridCLR\n   - 运行菜单 `HybridCLR/Define Symbols/Enable HybridCLR` 开启热更新\n   - 运行菜单 `HybridCLR/Generate/All` 进行必要的生成操作\n   - 运行菜单 `HybridCLR/Build/BuildAssets And CopyTo AssemblyPath` 生成热更新 DLL\n   - 运行菜单 `YooAsset/AssetBundle Builder` 构建 AB\n   - 打开 Build Settings，点击 Build And Run\n\n\u003e 💡 **提示**: 遇到问题请查看 [HybridCLR 常见错误](https://hybridclr.doc.code-philosophy.com/docs/help/commonerrors)\n\n---\n\n## 🏗️ 架构\n\n```\ncom.moirai.framework/\n├── Runtime/              # 核心框架程序集 (Moirai.Atropos)\n│   ├── Core/             # 基础工具与数据结构\n│   │   ├── Events/       #   事件系统（池化、冒泡传播）\n│   │   ├── Schedulers/   #   零分配调度器（定时器/帧计数器）\n│   │   ├── Singleton/    #   单例系统（纯 C# / MonoBehaviour）\n│   │   ├── MemoryPool/   #   内存池\n│   │   ├── Pool/         #   对象池（通用/UniTask/GameObject）\n│   │   ├── Tween/        #   缓动系统\n│   │   ├── Tasks/        #   任务/序列系统\n│   │   ├── GameLog/      #   日志系统\n│   │   ├── GameSettings/ #   画面设置\n│   │   ├── DataStructure/#   IOC容器、优先队列、稀疏数组等\n│   │   └── Extension/    #   通用扩展方法\n│   └── Modules/          #   功能模块\n│       ├── ResourceModule/    # YooAsset 资源管理\n│       ├── ConfigTableModule/ # 配置表管理\n│       ├── UIModule/          # UI 框架（窗口/控件/层）\n│       ├── AudioModule/       # 音频系统（分类/代理/淡入淡出）\n│       ├── LocalizationModule/# 本地化（文本/图片/音频/Google翻译）\n│       ├── FsmModule/         # 有限状态机\n│       ├── ProcedureModule/   # 流程管理\n│       ├── InputModule/       # 输入系统（键鼠/手柄/移动端）\n│       ├── SaveModule/        # 存档系统（JSON/二进制/加密）\n│       ├── ObjectPoolModule/  # 对象池模块\n│       ├── SceneModule/       # 场景管理\n│       ├── TimerModule/       # 计时器\n│       ├── DebuggerModule/    # 运行时调试器\n│       └── UpdateDriver/      # 更新循环驱动\n├── Editor/               # 编辑器工具集\n├── Plugins/              # 第三方库\n├── Samples~/             # 示例\n├── Templates~/           # 项目初始模板\n└── Tests/                # 单元测试\n```\n\n### 模块系统\n\n框架采用**模块化架构**，所有子系统均为普通 C# 类（非 MonoBehaviour），通过 `ModuleSystem` 统一注册管理。入口为 `GameModule`（MonoBehaviour），提供所有模块的静态访问器。\n\n```csharp\n// 模块访问 — 懒加载，首次访问时自动创建\nvar resource = GameModule.Resource;\nvar ui = GameModule.UI;\nvar audio = GameModule.Audio;\nvar localization = GameModule.Localization;\n```\n\n**模块生命周期：**\n- `OnInit()` — 模块初始化\n- `Shutdown()` — 模块销毁\n- 支持 `IUpdateModule`、`IFixedUpdateModule`、`ILateUpdateModule` 接口注册到驱动循环\n- 通过 `Priority` 属性控制更新顺序\n\n### 启动流程\n\n`Main/Procedure/` 定义了完整的启动链：\n\n```\nProcedureLaunch → ProcedureSplash → ProcedureInitPackage → ProcedureInitResources\n→ ProcedureCreateDownloader → ProcedureDownloadFile → ProcedureDownloadOver\n→ ProcedureClearCache → ProcedureLoadAssembly → ProcedurePreload → ProcedurePrepare4Main\n```\n\n每个阶段均为独立的 `ProcedureBase` 状态，可通过 `ProcedureSettings`（ScriptableObject）自定义。\n\n---\n\n## 📦 核心模块\n\n### Resource — 资源管理\n\n封装 YooAsset，提供同步/异步加载 API。\n\n| 特性 | 说明 |\n|------|------|\n| 播放模式 | EditorSimulate、Offline、Host、Web |\n| 引用计数 | `AssetObject` 池自动管理 |\n| 加载取消 | 支持 `CancellationToken` |\n| 资源加密 | FileOffset、FileStream |\n| 精灵加载 | `ResourceExtComponent` 支持子精灵 |\n\n```csharp\n// 异步加载\nvar handle = GameModule.Resource.LoadAssetAsync\u003cGameObject\u003e(\"Assets/Prefabs/Hero.prefab\");\nawait handle.ToUniTask();\nvar prefab = handle.AssetObject;\n\n// 同步加载\nvar sprite = GameModule.Resource.LoadAsset\u003cSprite\u003e(\"Assets/UI/icon.png\");\n```\n\n### UI — 界面框架\n\n商业化 UI 开发流程，栈式窗口管理。\n\n| 层级 | 用途 |\n|------|------|\n| Background | 背景层 |\n| UI | 主界面 |\n| Popup | 弹窗层 |\n| System | 系统层 |\n| Top | 置顶层 |\n\n```csharp\n// 打开窗口\nGameModule.UI.ShowWindow\u003cMainWindow\u003e();\n\n// 关闭窗口\nGameModule.UI.CloseWindow\u003cMainWindow\u003e();\n\n// Widget 子控件\npublic class MainWindow : UIWindow\n{\n    protected override void OnCreate() { /* 初始化 */ }\n    protected override void OnRefresh(object userData) { /* 刷新数据 */ }\n    protected override void OnClose() { /* 关闭清理 */ }\n}\n```\n\n**编辑器支持：** `ScriptAutoGenerator` 自动生成 UI 绑定代码。\n\n### Audio — 音频系统\n\n分类管理、代理播放、事件驱动。\n\n```csharp\n// 播放音效\nGameModule.Audio.Play(\"BGM_Main\", AudioGroup.BGM);\n\n// 淡入淡出\nGameModule.Audio.FadeIn(\"BGM_Battle\", 2.0f);\nGameModule.Audio.FadeOut(\"BGM_Main\", 1.5f);\n```\n\n- **AudioCategory** — 每个 AudioGroupConfig 对应一个分类\n- **AudioAgent** — 代理播放，自动管理 AudioSource 生命周期\n- **AudioMixer** — 集成 Unity AudioMixer\n- **事件驱动** — `AudioPlayEvent`、`AudioControlEvent`、`AudioTrackEvent`、`AudioFadeEvent`\n\n### Localization — 本地化\n\n支持多种内容类型自动注入。\n\n| 类型 | Localizer |\n|------|-----------|\n| UGUI Text | `LocalizerText` |\n| TextMeshPro | `LocalizerTMPText` |\n| SpriteRenderer | `LocalizerSprite` |\n| RawImage / Texture | `LocalizerRawImage` |\n| AudioSource | `LocalizerAudio` |\n| Timeline | `LocalizerTimeline` |\n\n- 基于 Luban 配置表加载本地化字符串\n- 支持 Google 翻译集成（`GoogleTranslator`）\n- 语言检测：命令行 → 编辑器设置 → 保存设置 → 系统语言\n\n### Events — 事件系统\n\n移植自 Unity UIElements 的池化冒泡事件系统。\n\n```csharp\n// 注册事件\nEventManager.RegisterCallback\u003cGameStartEvent\u003e(OnGameStart);\n\n// 发送事件（支持冒泡/捕获传播）\nEventManager.SendEvent(new GameStartEvent());\n\n// 取消注册\nEventManager.UnregisterCallback\u003cGameStartEvent\u003e(OnGameStart);\n```\n\n- **零 GC 分配** — 每种事件类型独立对象池\n- **传播机制** — TrickleDown（捕获）→ BubbleUp（冒泡）\n- **传播控制** — `StopPropagation()`、`StopImmediatePropagation()`、`PreventDefault()`\n- **编辑器调试** — 可视化事件派发调试窗口\n\n### FSM — 有限状态机\n\n```csharp\nvar fsm = GameModule.Fsm.CreateFsm(\"GameFlow\", state1, state2, state3);\nfsm.Start\u003cState1\u003e();\n\n// 状态切换\nfsm.ChangeState\u003cState2\u003e();\n\n// 状态接口\npublic class State1 : FsmState\n{\n    protected override void OnInit(IFsm fsm) { }\n    protected override void OnEnter(IFsm fsm) { }\n    protected override void OnUpdate(IFsm fsm, float elapseSeconds) { }\n    protected override void OnLeave(IFsm fsm, bool isShutdown) { }\n    protected override void OnDestroy(IFsm fsm) { }\n}\n```\n\n### Procedure — 流程管理\n\n基于 FSM 的游戏流程管理，每个阶段为独立状态。\n\n```csharp\npublic class ProcedurePreload : ProcedureBase\n{\n    protected override void OnEnter(IFsm\u003cIProcedureModule\u003e fsm)\n    {\n        // 预加载资源、初始化游戏数据\n    }\n\n    protected override void OnUpdate(IFsm\u003cIProcedureModule\u003e fsm, float elapseSeconds)\n    {\n        // 检查加载完成，切换到下一阶段\n    }\n}\n```\n\n### Input — 输入系统\n\n抽象输入层，支持多平台。\n\n| Handler | 说明 |\n|---------|------|\n| `UnityInputSystemHandler` | 新版 Input System |\n| `UnityInputManagerHandler` | 旧版 Input Manager |\n| `UIMobileInputHandler` | 移动端 UI 触控 |\n\n- UI 模态检测 — 弹窗打开时自动屏蔽玩家输入\n- 按键提示系统 — 支持 PS4/PS5/Xbox/Switch/SteamDeck/键鼠图标\n\n### Save — 存档系统\n\n可插拔的存档策略。\n\n```csharp\n// 保存\nGameModule.Save.Save(\"player_data\", playerData);\n\n// 加载\nvar data = GameModule.Save.Load\u003cPlayerData\u003e(\"player_data\");\n```\n\n| Handler | 说明 |\n|---------|------|\n| `JsonSaveHandler` | JSON 格式 |\n| `BinarySaveHandler` | 二进制格式 |\n| `JsonEncryptedSaveHandler` | JSON 加密 |\n| `BinaryEncryptedSaveHandler` | 二进制加密 |\n\n- **原子保存** — 先写 `.tmp` 再重命名，防止数据损坏\n\n### Scheduler — 调度器\n\n零分配的定时器/帧调度系统。\n\n```csharp\n// 延迟执行\nScheduler.Delay(2.0f, () =\u003e Debug.Log(\"2秒后执行\"));\n\n// 等待帧\nScheduler.WaitFrame(3, () =\u003e Debug.Log(\"3帧后执行\"));\n\n// 取消调度\nvar handle = Scheduler.Delay(5.0f, () =\u003e { });\nhandle.Cancel();\n```\n\n- 支持 Update / FixedUpdate / LateUpdate 帧\n- 支持循环、忽略 TimeScale\n- `SchedulerUnsafeBinding` — unsafe 结构体实现零分配函数指针派发\n\n---\n\n## 🧰 核心工具\n\n### ObjectPool — 对象池\n\n```csharp\n// 通用对象池\nvar pool = new ObjectPool\u003cMyClass\u003e(() =\u003e new MyClass(), 32);\nvar obj = pool.Get();\npool.Release(obj);\n\n// GameObject 池\nvar go = GameObjectPoolManager.Get(\"Particle\");\nGameObjectPoolManager.Release(go);\n```\n\n### MemoryPool — 内存池\n\n带集合管理的泛型内存池，减少 GC 压力。\n\n### Singleton — 单例系统\n\n| 类型 | 说明 |\n|------|------|\n| `Singleton\u003cT\u003e` | 纯 C# 单例，双重检查锁 |\n| `SingletonMono\u003cT\u003e` | MonoBehaviour 单例，支持持久化/替换策略 |\n\n`SingletonSystem` 集中管理所有单例生命周期，挂接 UpdateDriver 驱动 IUpdate/IFixedUpdate/ILateUpdate。\n\n### GameConfig — 配表管理\n\n集成 Luban 配置表系统。\n\n```csharp\nConfigMgr.LoadTables();           // 同步加载\nawait ConfigMgr.LoadTablesAsync(); // 异步加载\nvar cfg = ConfigMgr.Tables.TbItem.Get(itemId); // 懒加载访问\n```\n\n### GameLog — 日志系统\n\n```csharp\nLog.Info(\"玩家登录: {0}\", playerName);\nLog.Warning(\"资源加载失败: {0}\", path);\nLog.Error(\"严重错误!\");\n```\n\n- 条件编译：`LOG_DEBUG_ENABLE`、`LOG_ALL`、`LOG_INFO_ENABLE` 等\n- 可插拔 `ILogHelper` 实现自定义日志输出\n\n### GameSettings — 游戏设置\n\n画面设置管理：分辨率、全屏、VSync、窗口模式等。\n\n### DataStructure — 数据结构\n\n| 数据结构 | 说明 |\n|----------|------|\n| `IOCContainer` | 控制反转容器 |\n| `PriorityQueue\u003cT\u003e` | 优先队列 |\n| `RandomList\u003cT\u003e` | 随机列表 |\n| `SerializableDictionary\u003cK,V\u003e` | 可序列化字典 |\n| `SparseArray\u003cT\u003e` | 稀疏数组 |\n| `ShuffleBag\u003cT\u003e` | 洗牌袋（不重复随机） |\n| `GameDictionary\u003cK,V\u003e` | 游戏字典（带遍历支持） |\n| `GameLinkedList\u003cT\u003e` | 游戏链表 |\n| `GameMultiDictionary\u003cK,V\u003e` | 多值字典 |\n\n---\n\n## 🛠️ 编辑器工具\n\n| 工具 | 用途 |\n|------|------|\n| Atlas Maker | Sprite Atlas 创建 |\n| Custom Attributes | ~20 个自定义属性绘制器 + Odin 扩展 |\n| Define Symbols | Debug/Log/Profiler 宏定义管理 |\n| Event Debugger | 可视化事件派发调试窗口 |\n| Game Settings | 音频组、流程设置、更新设置编辑器 |\n| HybridCLR | 热更新 DLL 构建命令 |\n| Luban Tools | Luban 配置表生成 |\n| Maintenance | 清理空文件夹、查找丢失脚本、分组选择、锁定 Inspector |\n| Reference Finder | 资源依赖/引用树视图 |\n| Release Tools | 构建流水线窗口、构建配置 |\n| Scheduler Debugger | 可视化调度器/计时器调试器 |\n| Tasks Editor | 任务运行器编辑器 |\n| UI Module | UI 绑定代码自动生成、组件 Inspector |\n| Input Module | 输入动作配置编辑器、按键图标集合编辑器 |\n| YooAsset | 构建缓存清理、内置目录、自定义构建管线、Shader 变体收集 |\n\n---\n\n##  📁 推荐项目结构\n\n  ```text\n  Project Name/\n  ├── Client/                        # Unity 客户端工程\n  │   └── Assets/\n  │       ├── AssetArt/              # 美术资源目录\n  │   \t\t└── Atlas/             # 自动生成图集目录\n  │       ├── AssetRaw/              # 热更资源目录\n  │       │   ├── Audio/             # 音频资源\n  │       │   ├── Config/            # 配置和本地化资源\n  │       │   ├── DLL/               # 热更程序集资源\n  │       │   ├── Scene/             # 资源场景\n  │       │   └── UI/                # UI 预制体\n  │       ├── Editor/                # 项目编辑器脚本\n  │       ├── HybridCLRData/     \t   # HybridCLR 生成内容\n  │       ├── Scenes/                # 启动场景\n  │       ├── Scripts/\n  │       │   ├── GameBase/          # 主程序程序集（启动器与流程）\n  │       │   ├── GameLib/           # 第三方库程序集 [Dll]\n  │       │   ├── GameLogic/         # 游戏业务逻辑程序集 [Dll]\n  │       │       ├── HotfixEntry.cs     # 热更主入口\n  │       │   └── GameProto/         # 游戏配置协议程序集 [Dll]\n  │       └── YooAsset/              # YooAsset 配置\n  └── Config/                        # 配置表工程\n  ```\n\n---\n\n## 🤝 贡献与支持\n\n### 🌟 生态依赖\n\n| 项目 | 描述 |\n|------|------|\n| **[TEngine](https://github.com/Alex-Rachel/TEngine)** | Unity 商用级别开发框架 |\n| **[YooAsset](https://github.com/tuyoogame/YooAsset)** | 商业级经历百万 DAU 游戏验证的资源管理系统 |\n| **[HybridCLR](https://github.com/focus-creative-games/hybridclr)** | 特性完整、零成本、高性能、低内存的近乎完美的 Unity 全平台原生 C# 热更方案。 |\n| **[Luban](https://github.com/focus-creative-games/luban)** | 最佳游戏配置解决方案 |\n\n### 👥 贡献者\n[![Contributors](https://contrib.rocks/image?repo=TeamMoirai/com.moirai.framework)](https://github.com/TeamMoirai/com.moirai.framework/graphs/contributors)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteammoirai%2Fcom.moirai.framework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fteammoirai%2Fcom.moirai.framework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fteammoirai%2Fcom.moirai.framework/lists"}