# FishDice 资源管理分析

← 返回总览 资源管理

# 资源管理：当前是“配置内建 + Demo 极简资源”，还不是完整资源系统

源码里没有 Addressables、AssetBundle、Prefab 加载器或资源生命周期管理器。核心资源概念主要体现为内建配置数据；Demo UI 只通过 `Resources.GetBuiltinResource` 取 Unity 内置字体。

## 当前资源形态

资源/配置 | 当前位置 | 管理方式 | 评价
--- | --- | --- | ---
普通骰子面 | `LuckyDiceDefaultConfig` | 硬编码默认集合：2、3、4、5、6、clover。 | 适合第一版可测闭环，不适合策划热改。
Lucky Dice 结果 | `LuckyDiceDefaultConfig` | 硬编码 rocket、thief 和默认 slot count。 | 语义清楚，但还缺图标/Prefab 资源绑定。
规则表 | `ComboRuleDefinition` | 定义行加载为运行时 `ComboRule`。 | 已经具备迁移到 JSON/ScriptableObject 的形状。
目标模式映射 | `TargetModeDefinition` | result key + target key -> mode key。 | 适合作为玩法启动器的配置入口。
Demo 字体 | `LuckyDiceDemoController` | `Resources.GetBuiltinResource<Font>("LegacyRuntime.ttf")`。 | 仅 Demo 兜底，不是业务资源系统。

## 资源边界判断

当前框架刻意把核心运行时做成纯 C#，所以资源加载不能直接放入 Runtime 核心。真正落地生产时，建议在 Unity 接入层增加“配置提供者”和“表现资源解析器”：

    Runtime Core
      只认识 ResultKey / TargetKey / ModeKey / DiceFace

    Unity Integration Layer
      ResultKey -> Icon Sprite / Animation / Prefab
      TargetKey + ModeKey -> Scene / Controller / Launcher
      Remote or Local Config -> ComboRuleDefinition / LuckyDiceCandidateDefinition

## 后续资源系统建议

### 配置资源

把 `ComboRuleDefinition`、`LuckyDiceCandidateDefinition`、`TargetModeDefinition` 迁移为 JSON、ScriptableObject 或远端表时，保持先校验再创建 runtime config。

### 表现资源

新增一个独立的 Unity 层映射：`ResultKey -> icon/prefab/animation`，不要让 Runtime 持有 Sprite 或 GameObject。

### 目标玩法资源

由 `TargetModeEntry` 驱动目标玩法 launcher，launcher 再决定加载 scene、panel、prefab 或 addressable。

### 资源失败处理

资源加载失败应回到表现层兜底；核心选择结果不应因为图标缺失而改变。

## 证据

- Packages/manifest.json：项目含 `com.unity.modules.assetbundle`，但源码未发现实际 AssetBundle/Addressables 使用。
- LuckyDiceDefaultConfig.cs:65-88：普通骰子和 Lucky Dice set 由代码内建。
- LuckyDiceDefaultConfig.cs:151-238：规则、候选和 target mode 默认定义在代码中。
- LuckyDiceDemoController.cs:244：Demo 唯一明确资源读取是内置字体。
- rg Addressables/AssetBundle/LoadAsset：当前 FishDice 源码没有业务资源加载器证据。