Demo 资源布局
Demo 内容按拥有对象切分,而不是按资源类型切分,卡牌原画与卡牌放在一起,敌人 prefab 与敌人放在一起
根目录
📦 Demo/Content/ # 随包提供的表现资源,按拥有对象分组
├── 🎨 Art/ # 只存放跨对象共享资源
├── 🃏 Cards/ # 卡牌家族卡框、prefab 与单卡原画
├── 🗂️ Decks/ # 各职业初始/奖励卡组的封面图标
├── 🌄 Encounters/ # 职业背景、视差图层与遭遇战 UI
├── 🎯 Intents/ # 敌人意图图标及其显示组件
├── ✨ Statuses/ # 状态图标、状态组件与状态专用 VFX
└── 🧙 Units/ # 玩家/敌人美术、prefab 与单位共享组件
Cards
🃏 Content/Cards/ # 五个卡牌家族及其共用的发光贴图
├── ⚔️ Basic/ # Basic 家族的卡框、prefab 与卡牌原画
│ ├── 🖼️ Artwork/ # Strike、Defend 等 Basic 卡牌的原画
│ ├── 🎨 Basic.png # Basic 卡框贴图
│ └── 🧩 Basic.prefab # Basic 卡牌视图 prefab
├── 💥 Burst/ # Burst 家族的卡框、prefab 与原画
├── 🕯️ Curse/ # Curse 家族的卡框、prefab 与原画
├── 🛠️ Skill/ # Skill 家族的卡框、prefab 与原画
├── 🤝 Support/ # Support 家族的卡框、prefab 与原画
└── ✨ CardGlow.png # 所有卡牌家族共用的发光贴图
五个文件夹就是卡牌模板家族,每个家族拥有自己的卡框贴图、卡牌 prefab,以及一个 Artwork/ 文件夹,收纳所有用该卡框渲染的卡的原画,CardGlow.png 放在 Cards/ 根目录,因为所有卡都共用它
如果某张卡以后有了专属的 VFX、音频或动画,这些资源放到使用它们的卡牌家族之下,建立 VFX/、Audio/ 或 Animation/ 子文件夹,避免使用 Content/VFX/Cards/ 这种按资源类型聚合的顶层目录
Units
🧙 Content/Units/ # 单位自有美术/prefab 与单位级共享资源
├── 👹 Enemy/ # 先按职业、再按具体敌人组织
│ ├── 🏹 Enemy_Hunter/ # Hunter 敌人阵容
│ │ ├── 🐍 Enemy_PlagueStalker_Normal/ # Normal 敌人的美术与 prefab
│ │ ├── 🍄 Enemy_SporeBrute_Elite/ # Elite 敌人的美术与 prefab
│ │ ├── 💀 Enemy_MireReaper_Boss/ # Boss 的美术与 prefab
│ │ └── 🌱 Enemy_BogPolyp_Summon/ # 召唤单位的美术与 prefab
│ ├── 🪄 Enemy_Mage/ # Mage 敌人,每个单位使用带级别后缀的独立目录
│ ├── ✨ Enemy_Priest/ # Priest 敌人,每个单位使用带级别后缀的独立目录
│ └── ⚔️ Enemy_Warrior/ # Warrior 敌人,每个单位使用带级别后缀的独立目录
├── 🦸 Player/ # 按职业分组的玩家单位资源
│ ├── 🏹 Hunter/ # 头像、全身立绘与玩家 prefab
│ ├── 🪄 Mage/ # 头像、全身立绘与玩家 prefab
│ ├── ✨ Priest/ # 头像、全身立绘与玩家 prefab
│ ├── ⚔️ Warrior/ # 头像、全身立绘与玩家 prefab
│ └── 🌟 Shine.png # 玩家单位共用的高亮贴图
├── 🧩 Prefabs/ # HpWidget.prefab 等单位级共享组件
└── 🌑 Shadow.png # 所有单位共用的地面阴影
每个敌人在自己职业文件夹里有一个 Enemy_<Name>_<Tier> 独立文件夹,美术和 prefab 并排放在里面,每个玩家职业一个文件夹,装头像、全身立绘和单位 prefab,所有单位共用的 widget,比如 HP 条,放在 Units/Prefabs/
Encounters
🌄 Content/Encounters/ # 各遭遇战职业拥有的表现资源
├── 🏹 Hunter/ # Hunter 遭遇战表现资源
│ ├── 🖼️ Background.png # 铺满画面的职业背景
│ ├── 🏞️ Layer/ # 前景与背景视差图层
│ └── 🧭 UI/ # Hunter 专用遭遇战 UI 美术
├── 🪄 Mage/ # Mage 背景、视差图层与 UI 美术
├── ✨ Priest/ # Priest 背景、视差图层与 UI 美术
└── ⚔️ Warrior/ # Warrior 背景、视差图层与 UI 美术
遭遇战背景和视差图层归职业文件夹所有,场景文件本身不算内容,它们在 Demo/Scenes/<Class>/ 下
Statuses 和 Intents
✨ Content/Statuses/ # 状态自有图标、组件与表现特效
├── 🧩 Prefabs/ # StatusWidget.prefab 与 StatusIconEntry.prefab
├── 💫 VFX/ # 25 个状态施加/到期特效 prefab
└── 🖼️ Status_<Name>.png # 在 Workbench 中选择的 30 个状态图标
🎯 Content/Intents/ # 用于预告敌人行动的资源
├── 🧩 Prefabs/ # IntentWidget.prefab 与 IntentEntry.prefab
└── 🖼️ Intent_<Kind>.png # 从 Attack 到 Unknown 的 8 个意图图标
每个状态定义都通过 Workbench Status 模式中的 Icon 字段引用图标,具有专属视觉效果的状态把特效 prefab 放在 Statuses/VFX/,并在状态 FlowGraph 中通过 Status Apply FX 和 Status Expire FX 节点直接配置施加与到期表现,意图图标对应敌人头顶预告的意图类型,两个 Prefabs/ 文件夹则保存 demo 战斗 UI 用来显示状态和意图的 widget
Art 只放共享资源
Content/Art/ 只保留被多个对象共享的资源:
🎨 Content/Art/ # 被多个拥有对象共同使用的表现基础资源
├── 🔊 Audio/ # Mixer、BGM、环境音、玩法音效、UI、结算与敌人语音
├── 🔤 Fonts/ # 运行时字体与 TextMesh Pro 字体资产
├── 🧪 Materials/ # 共享 UI、环境与 VFX 材质
├── 🧩 Prefabs/ # 跨对象组件与可复用表现 prefab
├── 📦 Resources/ # 通过 Unity Resources 加载的 TinyGiants 资产
├── 🧬 Shaders/ # 共享 UI、Sprite、环境与粒子 Shader
├── 🖼️ Sprites/ # 共享光标、UI 与 VFX 贴图
└── 💥 VFX/ # 共享战斗特效与职业环境特效 prefab
音频树是"合法共享资源"最清晰的例子:一个混音器加各分类文件夹(BGM、环境音、卡牌音效、战斗打击、意图预告、状态音效、片段音乐、UI、敌人语音),每个场景都从这里走,某张卡的招牌音效就不属于这里,它应该去那张卡的家族文件夹
对象的私有资源应直接放进所属对象的目录,Art/ 只存放跨对象共享资源;先确定 owner 再放文件,可以避免后续移动资源时修改多个无关对象的引用
音频、VFX 与动画的存放规则
制作阶段产出最终表现资源时,归属规则决定去处:
| 资源属于 | 放到 |
|---|---|
| 一个卡牌家族 | Content/Cards/<Family>/VFX/(或 Audio/、Animation/) |
| 一个敌人 | 它自己的 Content/Units/Enemy/Enemy_<Class>/Enemy_<Name>_<Tier>/ 文件夹 |
| 一个玩家职业 | Content/Units/Player/<Class>/VFX/(或 Audio/、Animation/) |
| 一个遭遇战职业 | Content/Encounters/<Class>/VFX/(或 Audio/、Animation/) |
| 多个无关对象 | Content/Art/VFX/(或 Audio/、Animations/) |
对象内的子文件夹按需创建,等第一份这样的资源出现再建,给每个卡牌家族预建一个空 Audio/ 只会制造噪音
在自定义项目中应用布局规则
这套布局对 demo 内容是强制的,对你的内容是推荐的,照搬的方法:
- 导入资源前先确定它属于哪个对象
- 把资源放进该对象的文件夹,需要时新建子文件夹
- 只有确实找不到单一 owner 时,才使用共享文件夹
- 数据库和表现资源分开存放
- Demo 内容和生产内容使用不同的根目录,清理 demo 时不会影响你的游戏内容