Agent SkillsBesty0728/Unity-Skills › unity-qframework-design

unity-qframework-design

GitHub

提供QFramework v1.0.257架构设计规范,涵盖四层结构、核心工具及容器选型规则。基于源码与文档生成,含详细行号锚点,用于指导代码编写、审查及架构决策,防止过时知识干扰。

SkillsForUnity/unity-skills~/skills/qframework-design/SKILL.md Besty0728/Unity-Skills

Trigger Scenarios

编写或审查QFramework架构代码 注册System/Model/Utility组件 处理Command/Query/Event机制 绑定BindableProperty数据 IOCContainer选型决策

Install

npx skills add Besty0728/Unity-Skills --skill unity-qframework-design -g -y
More Options

Non-standard path

npx skills add https://github.com/Besty0728/Unity-Skills/tree/main/SkillsForUnity/unity-skills~/skills/qframework-design -g -y

Use without installing

npx skills use Besty0728/Unity-Skills@unity-qframework-design

指定 Agent (Claude Code)

npx skills add Besty0728/Unity-Skills --skill unity-qframework-design -a claude-code -g -y

安装 repo 全部 skill

npx skills add Besty0728/Unity-Skills --all -g -y

预览 repo 内 skill

npx skills add Besty0728/Unity-Skills --list

SKILL.md

Frontmatter
{
    "name": "unity-qframework-design",
    "description": "Source-anchored design rules for QFramework v1.0.257 covering the four-layer architecture (Controller\/System\/Model\/Utility), Command\/Query\/Event\/BindableProperty core tools, and the CoreKit-family toolkits (UIKit\/ResKit\/ActionKit\/PackageKit), distilled from QFramework.cs source and the official Doc.md tutorial with every rule citing a file\/line anchor to guard against stale-memory hallucination."
}

Before calling any skill in this module: if you are about to call a skill with parameters guessed from its name or description, STOP — read this file (or fetch its schema via GET /skills/recommend?includeSchema=true) first. If you already have the parameter definitions from recommend/schema, you may proceed straight to dryRun.

Triggers

  • Writing or reviewing QFramework architecture code (Controller/System/Model/Utility)
  • Registering Systems/Models/Utilities, sending Commands/Queries/Events
  • Binding BindableProperty / BindableList / BindableDictionary in views
  • Choosing between the core IOCContainer and the Toolkits IOCKit, or between architecture events and EasyEvent
  • 编写或审查 QFramework 架构代码、四层职责划分、Command/Query/Event/BindableProperty 使用、核心容器与 Toolkits 容器选型

QFramework - Design Rules(v1.0.257)

Advisory 模块。全部规则提炼自 QFramework 官方源码与教程:

  • QFramework.cs(核心架构单文件源码,仓库根目录 QFramework.cs,内部注释标注 Latest Update: 2026.8.12 return module instance after register
  • Doc.md(官方教程全文,8820 行,仓库根目录 Doc.md
  • QFramework API.md(核心层签名索引;Toolkits 无覆盖,且截至本次抓取仍未同步 2026-08-12 的返回值变更)

每条规则都标注具体文件/行号(行号对应上游 liangxiegame/QFramework 主仓库 v1.0.257 快照;Toolkits 源码位于 QFramework.Unity2018+/Assets/QFramework/),遇到分歧以 QFramework.cs 源码为准,Doc.md/API.md 仅供交叉印证——教程本身可能滞后于源码。正文中文,API 名/代码保持英文。

Mode: Documentation only — no REST skills to gate; load freely under any operating mode (Approval / Auto / Bypass).

When to Load This Module

生成或审查以下任意一项之前先加载:

  • Architecture<T> 子类的 Init() 启动逻辑、RegisterSystem/RegisterModel/RegisterUtility 调用
  • IController / ISystem / IModel / IUtility 接口实现,或给这些接口增删 ICan* 能力接口
  • SendCommand / SendQuery / SendEvent / RegisterEvent 调用,ICommand / ICommand<TResult> / IQuery<TResult> 实现
  • BindableProperty<T> / BindableList<T> / BindableDictionary<TKey,TValue> 的声明、Register/RegisterWithInitValue/Comparer 使用
  • TypeEventSystem / EasyEvent 系列的注册与手动注销
  • 覆写 Architecture<T>.ExecuteCommand 做 Command 拦截(日志/中间件/撤销/自动化测试)
  • 判断某个数据该放 Model 还是留在 MonoBehaviour 局部
  • 在 QFramework.cs 自带的 IOCContainer 与 Toolkits CoreKit.IOCKitIQFrameworkContainer + [Inject])之间选型
  • Toolkits 安装形态确认(unitypackage 导入 Assets/,无 UPM)、版本号核对

Critical Rule Summary

# Rule Source anchor
1 RegisterSystem<T>/RegisterModel<T>/RegisterUtility<T> 返回注册的实例本身(不再是 void),自 2026-08-12 起生效;IArchitecture 接口已声明 TSystem/TModel/TUtility 返回类型。官方 Doc.md 全部教程示例(含"用接口设计模块"一节 2408-2422 行)仍是丢弃返回值的旧写法,是过时示例,不代表当前推荐用法 QFramework.cs:43,45,47,132-163
2 四层接口:IController(226) ISystem(235) IModel(264) IUtility(291);ICommand(299) / ICommand<TResult>(305);IQuery<TResult> 只有泛型形式,没有非泛型 IQuery(342) QFramework.cs:226,235,264,291,299,305,342
3 分层通用规则:IController 改 System/Model 状态必须走 Command;System/Model 通知上层必须用 Event 或 BindableProperty;上层可直接获取下层,下层不能获取上层;Command/Query 不能有状态。规则是"理想状态",作者原话允许按需放宽(如给 IController 追加 ICanSendEvent Doc.md:2682-2820(放宽原话 2791,改接口示例 2793-2805)
4 判断数据是否该放 Model:时间上共享(跨启动持久化)、物理上共享(跨界面/跨场景常驻内存)、配置表三类才放 Model;反例——敌人生命不放 Model,交给敌人脚本自己管理 Doc.md:4051-4077(反例 4064-4066)
5 BindableProperty<T>.Value setter 靠 Comparer 判等后再触发事件;ComparerAutoRegister[RuntimeInitializeOnLoadMethod])已为 int/float/string/Vector2-4/Color/Quaternion 等类型把默认 Equals 换成 ==Register 只订阅后续变化,RegisterWithInitValue 会先用当前值回调一次 QFramework.cs:711,762-789,740-749
6 BindableList<T> / BindableDictionary<TKey,TValue> 是 2024-09-18/19 才加的 Toolkits 附加工具(_CoreKit/BindableKit/,不在 QFramework.cs 单文件里),边缘工具而非核心概念;作者原话承认不知道 BindableDictionary 能用在什么场景——按需评估,不要当成默认选型。BindableList 索引器赋值只触发 OnReplaceMove 只触发 OnMove(都不会连带 OnAdd/OnRemove Doc.md:8438-8592,8593-8712(原话 8595);BindableList.cs:38-115,BindableDictionary.cs:17-44
7 事件工具三选一:TypeEventSystem(跨对象、支持接口继承事件、适合通用系统)/EasyEvent(脱离架构、更轻量、无字段名)/架构内建 SendEvent(基于 TypeEventSystem 实例)。手动注销必须用具名方法(匿名委托无法 -=);UnRegisterWhenCurrentSceneUnloaded() 无需传 GameObject,换场景即自动清空;事件类型建议用 struct 减少 GC Doc.md:3305-3461(小结 3440-3461),QFramework.cs:610-611,624-641
8 Command 拦截:覆写 Architecture<T>.ExecuteCommand(ICommand)(前后各插一段逻辑)可做日志/中间件/撤销/自动化测试,官方源码默认实现只是直接 command.Execute() Doc.md:3137-3186QFramework.cs:183-187
9 两套容器不要混淆:核心 IOCContainerDictionary<Type,object>,仅单例注册/获取,Architecture<T> 内部私有持有一份,无反射);Toolkits CoreKit.IOCKitIQFrameworkContainer/QFrameworkContainer)是完全独立的反射式依赖注入实现——支持类型映射、命名注册、关系映射、按 [Inject] 特性做字段/属性注入、按参数最多的公开构造函数自动解析依赖——不在 QFramework.cs 源文件里 核心:QFramework.cs:130,647-684;Toolkits:IOCKit.cs:19-31,33-136,141,239-263,315-358_CoreKit/IOCKit/IOCKit.cs
10 Toolkits 安装形态:.unitypackage 导入 Assets/没有 UPM 包;已装版本看 PackageKit 编辑器面板或安装目录下的 PackageVersion.json,GitHub/Gitee Release tag 会滞后于 PackageKit 实时源 Doc.md:4178-4182PackageData.cs:286PackageVersion.json 写入路径,Toolkits 源码)

Sub-doc Routing

Sub-doc When to read
LAYERS.md 四层接口与职责、通用规则与放宽方式、共享数据判据、Command 拦截、Architecture<T> 生命周期(InitArchitecture/Deinit
BINDABLE_QUERY.md BindableProperty(含 Comparer/RegisterWithInitValue)、BindableList/BindableDictionaryCommand vs Query 的 CQRS 分工
EVENT_TOOLS.md TypeEventSystemEasyEvent 家族、IOCContainer(核心)vs IOCKit(Toolkits)、注销模式(UnRegisterWhenGameObjectDestroyed/UnRegisterWhenCurrentSceneUnloaded/IUnRegisterList
CODEGEN_UIKIT.md CodeGenKit 两阶段代码生成(Designer 覆盖规则、命名空间迁移、ScriptsFolder 不 fallback、ViewController 嵌套、OtherBinds)与 UIKit 界面工作流(面板开关/生命周期/Apply 选错 UIRoot 的硬坑/UIKitSettingData 配置)
RESKIT.md ResKit 资源方案:AssetBundle 标记粒度、场景独占 AB、模拟/非模拟模式、ResLoader 引用计数语义、构建输出目录、AB 跨包 Prefab 依赖的 Unity 官方 bug
ACTIONKIT.md ActionKit 链式动作序列(Delay/Sequence/Parallel/Repeat/Condition、全局生命周期、TimeScale 与场景切换)、SingletonKit 六种单例选型、AudioKit 三通道与纯编辑态访问 Settings 会 NPE 的陷阱、ScreenTransition
DATA_KITS.md FSMKit(链式 vs 类模式)、TableKit(联合查询与内部基础设施定位)、PoolKit(两种池语义差异)、GridKit/DynaGrid

Routing to Other Modules

  • REST 端点/操作层面的 QFramework 技能调用 → 加载并行编写的 qframework REST 模块(本模块只覆盖设计规则,不覆盖 REST 参数)
  • 与 UniTask/协程的桥接(ActionKit 序列 vs async)→ unitask-design / async
  • 整体架构分层评审、状态管理选型 → architecture / patterns
  • 事件/BindableProperty 高频触发场景的性能评审 → performance
  • ResKit 底层如走 Addressables 的资源生命周期 → addressables-design
  • Asmdef 布局(QFramework.cs 与 Toolkits 分别装配)→ asmdef

Version Scope

锚定 v1.0.257(QFramework.cs 内部注释最后更新 2026-08-12,本模块 2026-08 抓取)。

  • QFramework.cs 是单文件核心架构,版本号不随 Toolkits 独立发布,跟随 GitHub/Gitee 主仓库 tag。
  • Toolkits(CoreKit/UIKit/ResKit/ActionKit/AudioKit/PackageKit…)版本以 PackageKit 面板/PackageVersion.json 为准,可能领先于本模块引用的 unitypackage 快照。
  • 关键分水岭:RegisterSystem/RegisterModel/RegisterUtility 返回值语义在 2026-08-12 从 void 改为返回实例——凡是引用早于此版本的第三方教程或历史代码,示例可能与当前源码签名不符,以 QFramework.cs 为准。

当有疑问时,去读源码引用的行号,而不是凭记忆或凭教程旧例。

Known Gaps

  • LocaleKit 官方教程零覆盖:Doc.md 全篇只在工具清单里一句话提到 LocaleKit("本地化&多语言工具集"),没有任何用法示例或 API 说明。从源码看它当前主要是编辑器内 CN/EN 显示开关(LocaleKitEditor.IsCNEditorPrefsEDITOR_CN)加一份语言定义 ScriptableObject(LanguageDefineConfig),并不是面向游戏运行时文本的完整多语言方案,与其自我描述有落差。需要运行时本地化时不要假设 LocaleKit 能直接胜任,先读源码确认。
  • FluentAPI 方法清单未逐条收录_CoreKit/FluentAPI/ 覆盖 GameObject/Transform/Camera/Color/Graphic/Vector/RectTransform 及 C# 基础类型的大量链式扩展,数量过大未在本模块展开;用到时按目标类型去对应源文件查。

Version History

  • 2708bb6 Current 2026-09-03 00:43

Same Skill Collection

SkillsForUnity/unity-skills~/skills/addressables-design/SKILL.md
SkillsForUnity/unity-skills~/skills/addressables/SKILL.md
SkillsForUnity/unity-skills~/skills/adr/SKILL.md
SkillsForUnity/unity-skills~/skills/animator/SKILL.md
SkillsForUnity/unity-skills~/skills/behavior/SKILL.md
SkillsForUnity/unity-skills~/skills/blueprints/SKILL.md
SkillsForUnity/unity-skills~/skills/event/SKILL.md
SkillsForUnity/unity-skills~/skills/graphics/SKILL.md
SkillsForUnity/unity-skills~/skills/history/SKILL.md
SkillsForUnity/unity-skills~/skills/manual-component/SKILL.md
SkillsForUnity/unity-skills~/skills/manual-gameobject/SKILL.md
SkillsForUnity/unity-skills~/skills/manual-material/SKILL.md
SkillsForUnity/unity-skills~/skills/manual-scene/SKILL.md
SkillsForUnity/unity-skills~/skills/material/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode-design/SKILL.md
SkillsForUnity/unity-skills~/skills/netcode/SKILL.md
SkillsForUnity/unity-skills~/skills/perception/SKILL.md
SkillsForUnity/unity-skills~/skills/pico-design/SKILL.md
SkillsForUnity/unity-skills~/skills/primetween/SKILL.md
SkillsForUnity/unity-skills~/skills/probuilder/SKILL.md
SkillsForUnity/unity-skills~/skills/profiler/SKILL.md
SkillsForUnity/unity-skills~/skills/project-scout/SKILL.md
SkillsForUnity/unity-skills~/skills/sample/SKILL.md
SkillsForUnity/unity-skills~/skills/shadergraph-design/SKILL.md
SkillsForUnity/unity-skills~/skills/SKILL.md
SkillsForUnity/unity-skills~/skills/smart/SKILL.md
SkillsForUnity/unity-skills~/skills/unity-cli/SKILL.md
SkillsForUnity/unity-skills~/skills/yaml-editing/SKILL.md
SkillsForUnity/unity-skills~/SKILL.md
SkillsForUnity/unity-skills~/skills/architecture/SKILL.md
SkillsForUnity/unity-skills~/skills/asmdef/SKILL.md
SkillsForUnity/unity-skills~/skills/asset/SKILL.md
SkillsForUnity/unity-skills~/skills/async/SKILL.md
SkillsForUnity/unity-skills~/skills/batch/SKILL.md
SkillsForUnity/unity-skills~/skills/bookmark/SKILL.md
SkillsForUnity/unity-skills~/skills/camera/SKILL.md
SkillsForUnity/unity-skills~/skills/cinemachine/SKILL.md
SkillsForUnity/unity-skills~/skills/cleaner/SKILL.md
SkillsForUnity/unity-skills~/skills/component/SKILL.md
SkillsForUnity/unity-skills~/skills/console/SKILL.md
SkillsForUnity/unity-skills~/skills/debug/SKILL.md
SkillsForUnity/unity-skills~/skills/decal/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween-design/SKILL.md
SkillsForUnity/unity-skills~/skills/dotween/SKILL.md
SkillsForUnity/unity-skills~/skills/editor/SKILL.md
SkillsForUnity/unity-skills~/skills/gameobject/SKILL.md
SkillsForUnity/unity-skills~/skills/hybridclr/SKILL.md
SkillsForUnity/unity-skills~/skills/importer/SKILL.md
SkillsForUnity/unity-skills~/skills/inspector/SKILL.md

Metadata

Files
0
Version
2708bb6
Hash
e1311c57
Indexed
2026-09-03 00:43

trang chủ - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-03 05:13
浙ICP备14020137号-1 $bản đồ khách truy cập$