# Unity UI 工程约定(AIGame) > 从 AIC# `UnityProject.md` 抽取 UI 相关条款,并按本仓库竖屏 / Bundles / YooAsset / HybridCLR 改写。 ## 环境 - Unity:`2022.3.62f3`(`AIClient/ProjectSettings/ProjectVersion.txt`) - 客户端:`AIClient/` - 屏幕:**竖屏**;UI 设计分辨率 **`1080×1920`** - 资源包:YooAsset;业务代码:HybridCLR HotUpdate ## 目录 | 用途 | 路径 | | --- | --- | | 通用 UI 贴图 | `Assets/Bundles/UI/Texture/Common` | | 业务 UI 贴图 | `Assets/Bundles/UI/Texture/` | | UI Prefab | `Assets/Bundles/UI/Prefab` | | UI 字体 | `Assets/Bundles/UI/Font`(源文件 `siyuan_CN_Bold.otf`,TMP:`siyuan_CN_Bold SDF.asset`) | | JSON 描述 | 仓库根 `Doc/UIPrefabCreater` | | 热更 UI 脚本 | `Assets/HotUpdate/Scripts/UI` | | AOT 启动条 | `Assets/AOT/Scripts/UI`(仅补丁/启动,不放业务面板) | ## UI 挂载层级 运行时挂到 `UIRoot` 子节点(待实现时保持约定): - **HUD** → **Normal** → **Dialog** → **Tips**(越上越前) ## UI 制作流程 1. 设计竖屏界面;优先复用 Common 切图(`Doc/UI_Normal_Set.md` / `UI_Pic_Set.md`)。 2. 输出 `Doc/UIPrefabCreater/{UIName}.json`(契约见 `UIGenerationPrompt.md`)。 3. Unity 获焦自动生成 Prefab,或菜单 `Tools/UI/...`。 4. HotUpdate C# 接管:按名找节点,异步加载资源。 5. 新贴图走 `ResourceCreate.md`,登记 `Doc/ResDesc_Picture.md`。 ## JSON → Prefab 要点 - `referenceResolution`: `[1080, 1920]` - 文字:仅 TextMeshPro,默认字体 `Assets/Bundles/UI/Font/siyuan_CN_Bold SDF.asset`(由 `siyuan_CN_Bold.otf` 生成,动态图集);浅色字描边/阴影非纯黑。 - 标准控件底图必须九宫格:`imageType: Sliced` + Sprite 有效非零 `Border` + `Full Rect`;按钮状态图同样设置。Common 导入规则:`UiSpriteNineSliceRules.cs`;修复菜单:`Tools/UI/Apply Standard Control Nine-Slice`。 - 按钮:SpriteSwap 优先 - `MonoBehaviour.typeName` 指向 HotUpdate 类型 - 安全区等通用基础组件可指向 AOT 类型;主界面顶部布局使用 `AOT.UI.UiSafeArea`,业务按钮避开摄像头与微信胶囊,背景保持全屏。 - 转换器遵循 `assets.sprites` 显式路径;`RawImage.material` 为序列化材质引用,禁止仅依赖 Shader.Find 保留业务预览 Shader。 ## 资源加载 - **一律异步**(YooAsset);禁止新写同步加载热更资源。 - Prefab/贴图路径建议带 `Assets/Bundles/...`。 ## UI 风格 - 当前仅使用 Candy 糖果风;Studio / Mint 主题与停用的切换入口已删除。 - `BootSettings.UiTheme` / 远程 `version.json.uiTheme` 保留用于旧配置兼容,其他值回退 Candy。 - 业务按逻辑名异步打开:`UiManager.OpenAsync`。 - UI Prefab 与自动图集收集进 Art/UI,图片跟所属图集同包,字体作为 Prefab 依赖进入资源包。 ## 与图集方案关系 - Prefab 继续直接引用单图 Sprite,JSON 路径与九宫格 Border 保持不变。 - 目录级自动 SpriteAtlas、YooAsset 同包及运行时异步绑定见 `Doc/UI_Atlas_Pipeline.md`。 ## Agent 边界 遵守 `UNITY-GUIDE.md`:可直接改 JSON/MD/C#;不手改 `.prefab`/`.meta`;Prefab 由转换器或 Pipeline 生成。