Files
aibis-dream/Docs/ResourceManagementSpec.md
T
2026-03-27 22:25:15 +08:00

8.2 KiB
Raw Blame History

资源管理规范(目录与资产归属)

本文档规定:自研运行时资源Assets/ 下的摆放层次
怎么加载ResourceSystem、Addressable Key/Group/Label)见 资源加载最佳实践


1. 总结构:一棵「运行时内容」树 + 归档 + 例外

Assets/
├── GameContent/                 ← 自研「运行时资源」统一入口
│   ├── Common/                  ← 全局共用(跨场景、跨系统)
│   ├── UI/                      ← 跨场景 UI 相关(通用控件、主题、共用界面等)
│   ├── Scene_{Name}/            ← 关卡/场景线独占资源(与 §1.1 前缀约定一致)
│   ├── Feature_{Name}/          ← 玩法/功能模块(可跨场景;与 Scene_ 同级,层级统一)
│   └── …
├── Narrative/                   ← Yarn 与 Dialog 本地化(见 §6
│   ├── Yarn/
│   └── Localization/
├── _Archive/                    ← 归档(见 §5)
├── Scenes/                      ← .unity 场景文件(勿与 GameContent/Scene_* 混淆)
├── Scripts/、Editor/            ← 代码
└── (其它见 §4「不并入 GameContent 的目录」)

GameContent/ 内两层规则:

  1. 第一层CommonUIScene_* / Feature_*(命名见 §1.1)。
  2. 第二层:再按 资源类型 分子文件夹(见 §2)。

1.1 场景与功能目录命名

Common/UI/ 同级摊平,用 Scene_ / Feature_ 前缀区分关卡线与功能模块:

前缀 含义 示例
Scene_ 关卡/场景线独占(与 .unity 或章节强绑定) Scene_ClinicOut/Scene_SubWay/Scene_Dream/
Feature_ 玩法/功能模块(可跨多个场景加载) Feature_BlockPuzzle/Feature_HuoShanFix/
  • Common/UI/ 同一层级Scene_Feature_ 之后为 PascalCase 代号(可含多个单词,如 HuoShanFix)。
  • 前缀与代号之间用 下划线 分隔(与常见 Addressable Group 命名一致,如 Scene_ClinicOut)。

Assets/Scenes/:后者仅放 .unity 场景文件GameContent/Scene_* 放该关资源。名称相似,沟通时区分清楚。


2. GameContent/ 下的标准类型子目录

Common/UI/Scene_* / Feature_* 根目录下,按需建立下列 类型 子目录(不必全部存在)。

子目录 内容
Art/ Sprite、贴图、序列帧等;可直接使用 .psd 作为导入素材(Unity PSD 导入),无需为「规范」强行改成 PNG;大文件注意仓库体积与导入设置。
Prefab/ Prefab
Render/ 该归属范围内的渲染相关:如 Volume Profile、场景专用 Renderer 设置、仅本关使用的渲染资源等;全局 URP/Renderer 主配置优先放 Common/Render/
Animation/ .anim、Animator Controller 等
Material/ 材质(若与全局共用重复,优先放 Common/Material/
Shader/ 项目自研 Shader(仅当该关/该模块专属;全局 Shader 放 Common/Shader/
Data/ ScriptableObject、关卡 JSON 等数据资产
Timeline/ Timeline / .playable 等(与 Animation/ 分目录存放)

命名:类型子目录统一 PascalCaseArtPrefabRender),不要混用 art / Art

音频:项目运行时音频走 FMOD,不在 GameContent/ 下另建 Audio/;银行与流式路径见 §4。

禁止:在 Art/ 里长期放 Prefab、在 Material/ 里放 Prefab;全局管线与业务材质混在同一个 Render/ 根里不分类(应靠 CommonScene_* / Feature_* 分清)。


3. 各第一层目录的职责

3.1 GameContent/Common/

  • 全程或大范围共用的资源:全局材质、通用 Shader、默认 UI 以外的共享特效、常驻角色/道具(若约定放此)、全局 Render/ 等。
  • Persistence / 常驻加载 相关的资源,优先落在此处或与此目录并列的单独约定(与 Addressable Core 等组对齐即可)。

3.2 GameContent/UI/

  • 跨多个场景出现的 UI:通用面板、按钮样式、共享 HUD 预制体、UI 动效、UI 用图与材质等。
  • 仅某一关专属的界面:放在对应 Scene_*/Prefab/Scene_*/Art/,不放在 GameContent/UI/

3.3 GameContent/Scene_*GameContent/Feature_*

  • Scene_*:只服务某一关卡/场景线的资源(与 §1.1 一致)。
  • Feature_*玩法或功能模块(可跨场景),与单关独占资源分开。
  • 新增场景线或功能模块时:新建 Scene_*Feature_* 文件夹(命名见 §1.1),资源只进对应目录。

4. 不并入 GameContent/ 的目录(例外)

以下目录因 Unity / 管线 / 第三方原因,保留在既有路径,不强行迁入 GameContent/;规范上视为「运行时相关但单独管理」。

路径 说明
Assets/Resources/ Unity 特殊文件夹;仅保留约定用途,勿堆无关运行时资源。
Assets/StreamingAssets/ 运行时原始文件读取。
Assets/Language/ Unity LocalizationLocales、UIText、ActorName 等全局表放此处。Dialog 字串表规范见 §6Narrative/Localization/)。
Assets/FMOD Banks/StreamingAssets 下 FMOD 音频工程输出,按音频管线。
Assets/Plugins/Samples/Shapes/ 第三方与示例,不合并GameContent/

5. 归档资源(与运行时分离)

  • 废弃或仅作参考 的资源放在 Assets/_Archive/
  • 禁止将归档目录内资源作为正式内容引用;若需使用,须先移入 GameContent/ / Narrative/ 等正式目录并纳入正常流程。

6. Yarn 与 Dialog 本地化(Narrative/

Yarn 脚本与 Unity Localization Dialog 字串表统一放在 Assets/Narrative/ 下,分两个类型目录,便于与 Assets/Language/ 里全局表区分、也便于两边对照。

目录结构(当前)

Assets/Narrative/
├── Yarn/                 ← .yarn、`.yarnproject`Yarn 工程入口)
└── Localization/         ← Dialog 相关 String Table(含各语言、Shared Data 等)

仍放在 Assets/Language/Locales/UIText/ActorName/Params/Sprite/非按对话模块切分的本地化内容。

后续:按剧情模块再分子目录(或迁入 Narrative/{ModuleId}/…)待 Yarn 与引用链统一后再做;当前阶段以整包迁入 Yarn/Localization/ 为准。


7. 与 Addressable 的对应关系

GameContent/ 下每个 Scene_* / Feature_*(及 CommonUI)子树,在概念上对应 一个或一组 Addressable GroupNarrative/ 内资源按项目分组策略与 Yarn / Localization 管线对齐。新增分组时应有对应磁盘路径。Addressable Key、条目维护见《资源加载最佳实践》。


8. 命名与自检

  • 场景/功能:与 CommonUI 同级,使用 Scene_ / Feature_ 前缀 文件夹(见 §1.1)。
  • Assets/Scenes/(.unity):建议区分正式关卡与测试场景(子文件夹或 Test_ 前缀);勿与 GameContent/Scene_* 混为一谈。
  • 自检(提交前可扫)
    • 新 Yarn / Dialog 表落在 Narrative/Yarn/Narrative/Localization/(§6);全局本地化仍在 Language/ 约定路径。
    • 新资源落在 GameContent/ 的正确位置(Common / UI / 对应 Scene_*Feature_*)及类型子目录。
    • Prefab 不在 Art/Material/ 等纯类型目录中长期混放。
    • 归档目录无正式引用。
    • 未把第三方示例打进正式 Addressable Group。

9. 与《资源加载最佳实践》的分工

文档 内容
本文 GameContent/Narrative/Yarn+Dialog)、归档与例外目录。
资源加载最佳实践 加载 API、Key、Group、Label、生命周期与性能。

文档版本: 3.8 — Yarn/Dialog 规范移至 §6。