Game_Num_Basics_And_Calc

🏭 标准资源管理工业流程 (Standard Resource Workflow)

目标: 将分散的命名规范、目录结构和热更技术串联成一条完整的工业化生产管线核心文档引用:

1. 🗺️ 全景流程图 (The Pipeline)

graph TD
    A[🎨 美术/策划生产] -->|命名规范| B(导入 Unity)
    B -->|目录结构| C{资源归档}
    C -->|通用资源| D[Assets/_Project/Art]
    C -->|模块资源| E[Assets/_Project/Features]
    D & E -->|AssetPostprocessor| F[自动设置 Import Settings]
    F -->|YooAsset Collector| G[资源收集与分包]
    G -->|构建| H[生成 AssetBundles]
    H -->|HybridCLR| I[注入热更 DLL]
    I -->|上传| J[CDN 分发]

2. 🏭 阶段一:生产与导入 (Production & Import)

2.1 命名作为第一道防线

2.2 物理归档 (Physical Layout)

依据 目录结构 的“混合式架构”:

2.3 自动化导入设置 (Auto Import Settings)

不要依赖人工手动设置 Texture Type 或 Compression。利用命名规范自动处理:

3. 📦 阶段二:分包与构建 (Packaging)

3.1 YooAsset 收集策略 (Collector Strategy)

我们将目录结构直接映射到 YooAsset 的收集器规则中,实现零配置分包。

目录路径 收集规则 (Collector) 打包方式 (Addressable) 对应 Package
_Project/Art/UI/Common PackDirectory PackTogether (打成一个大包) DefaultPackage
_Project/Scenes/Boot.unity PackFile - DefaultPackage
_Project/Features/Chapter1 PackDirectory PackSeparately (每个文件单独打) LevelPackage
_Project/Features/Chapter2 PackDirectory PackSeparately LevelPackage

3.2 依赖管理 (Dependency Management)

4. 🚀 阶段三:热更与发布 (Hot Update)

4.1 代码与资源的同步

4.2 兜底策略 (Fallback)

5. 🔍 案例分析:复杂 UI 面板 (Case Study)

场景: 一个 “背包面板” (InventoryPanel),包含:

  1. 1个独特的背景图: UI_Inventory_Bg.png (仅此面板使用)。
  2. 2个通用底板: UI_Common_Frame.png, UI_Common_Button.png (全游戏通用)。
  3. 100个道具图标: UI_Icon_Sword.png… (全游戏通用)。

5.1 物理存放 (按维护性优先)

我们坚持 “维护性 > 性能” 的原则进行物理存放,性能问题交给构建管线解决。

5.2 图集打包 (Sprite Atlas 策略)

在构建阶段,我们通过 SpriteAtlas 来解决 DrawCall 问题,而不是通过移动文件。

  1. Common Atlas: 包含 _Project/Art/UI/Common 下的所有小图。
    • 结果: 背包面板加载时,常驻内存。
  2. Icon Atlas: 包含 _Project/Art/UI/Icons 下的所有图标。
    • 策略: 如果图标太多 (1000+),按功能拆分 (e.g., Icon_Weapon_Atlas, Icon_Potion_Atlas)。
    • 结果: 打开背包时加载。
  3. Unique BG: 不打入图集
    • 理由: 全屏背景图通常很大 (1024x1024+),打入图集会造成巨大的内存浪费(因为你很难填满剩余空间)。直接作为 Sprite (Single) 加载即可。

5.3 运行时 DrawCall 估算

  1. BG (Unique): 1 DrawCall (独立纹理)。
  2. Frame/Buttons (Common): 1 DrawCall (Common Atlas)。
  3. Icons (Item): 1 DrawCall (Icon Atlas)。
  4. Text: 1 DrawCall (Font Texture)。
    • 总计: 约 4-5 DrawCalls。这是非常健康的。

结论: 物理上按功能分,逻辑上按图集聚。 不要为了减少 1 个 DrawCall 而破坏项目结构的清晰度。

6. ✅ 开发者日常自查清单 (Daily Checklist)

  1. 命名: 新建文件是否符合 Prefix_Name 规范?
  2. 位置: 它是通用资源还是模块独享资源?放对文件夹了吗?
  3. 引用: 核心 UI 是否错误引用了关卡内的大贴图?
  4. 测试: 提交前是否在 EditorSimulateMode 下运行测试过?