UI 管理:Demo 是运行时构建 UGUI,核心框架尚未定义 UI 系统
当前 UI 设计思想是“表现层消费核心结果”。核心不依赖 UI;Demo Controller 用 Canvas、Text、Button 手写一个最小可交互界面。
现有 UI 链路
LuckyDiceDemoController.Awake -> BuildUi -> ShowReady Button.onClick -> StartRoll -> PlayRollFlow coroutine -> LuckyDiceDemoRunner.RunRandom -> ApplyDiceTexts / ShowResult
UI 在点击后播放普通骰子文本轮播,再把核心结果写回 Text。若结果是 Lucky Dice,则显示 3 个 Lucky slot,再展示目标玩法信息。
UI 设计思想
| 点 | 当前实现 | 含义 |
|---|---|---|
| 核心和表现分离 | 核心先一次性算出 LuckyDiceDemoSnapshot。 | UI 动画不会参与规则、随机或目标模式决策。 |
| 状态展示集中 | ShowReady、ShowResult、SetStatus、ApplyDiceTexts。 | Demo 可读,但还不是可复用 UI 框架。 |
| 运行时构建界面 | BuildUi 代码创建 Canvas、Board、Text、Button。 | 方便演示,生产项目应改为 prefab/scene-authored UI。 |
| 缺少导航系统 | 没有 panel stack、modal、screen router、layer manager。 | 当前不能直接承担完整游戏 UI 管理。 |
生产化建议
保留核心输出模型
继续让核心输出 RollFlowResult、TargetModeEntry、RollTrace,UI 只消费这些结构。
拆 Presenter
把 Demo 中的格式化和状态展示拆成 Presenter/ViewModel,避免 UI 文本拼接散落在 Controller。
Prefab 化
把 Canvas、骰子格、结果槽、按钮做成 prefab,运行时只绑定数据和触发动画。
建立玩法启动 UI 协议
EnterTargetModeEffect 或 TargetModeEntry 应交给上层流程/UI router,而不是 Demo Controller 直接决定跳转。
证据
- LuckyDiceDemoController.cs:11:Demo UI 是
MonoBehaviour。 - LuckyDiceDemoController.cs:131-178:运行时创建 Canvas、Board、Text 和 Button。
- LuckyDiceDemoController.cs:46-74:UI coroutine 消费核心结果并播放表现。
- LuckyDiceDemoRunner.cs:40-76:DemoRunner 把核心结果格式化成 snapshot。
- Runtime asmdef:核心不引用 Unity UI。