← 返回总览流程与生命周期

一次 Roll 的完整生命周期

框架生命周期不是 Unity 场景级生命周期,而是玩法请求级生命周期:一次 RollFlowRequest 进入核心服务,沿着 Roll、Facts、Rules、Actions、LuckySelection、TargetMode 和 Trace 形成闭环。

主链路

RollFlowRequest
  -> DiceRollService.Roll
  -> ComboFactBuilder.Build
  -> ComboRuleMatcher.Match
  -> RollActionDispatcher.Execute
  -> LuckyDiceFlowService.Select       [只有触发 Lucky Dice 时]
  -> TargetModeResolver.Resolve        [只有选中 Lucky Dice 候选时]
  -> RollFlowResult + RollTrace

LuckyDiceRollFlowService.Execute 是整个核心生命周期的编排点。它创建 RollTrace,执行普通骰子 Roll,把结果转成组合事实,再匹配规则和分发 action。如果 action 结果中包含 LuckyDiceRequestedEffect,才进入 Lucky Dice 选择和目标玩法解析。

生命周期所有权

阶段所有者输入输出
请求校验LuckyDiceRollFlowServiceRollFlowRequest有效 session、dice set、trigger source。
骰子产生DiceRollServiceDiceSetConfig、随机源DiceRollResult
事实提取ComboFactBuilder普通骰子结果ComboFacts,含无序 key、计数、点数。
规则命中ComboRuleMatcherfacts、combo rules按优先级排列的 ComboRuleMatch
行为执行RollActionDispatcheraction list、contextRewardEffectMultiplierEffectLuckyDiceRequestedEffect 等。
特殊骰子选择LuckyDiceFlowService候选池、请求上下文、Lucky Dice set选中候选、slot count、fallback 类型。
目标玩法解析TargetModeResolver选中候选、请求、倍率、mode definitionsTargetModeEntry 或失败原因。

Unity Demo 生命周期

Demo 层通过 LuckyDiceDemoController.Awake 构建 UI 并显示初始状态。用户点击按钮后,StartRoll 启动 coroutine,先做普通骰子动画,再调用 LuckyDiceDemoRunner.RunRandom 获取核心结果,并根据结果展示普通奖励、Clover Bonus 或 Lucky Dice 目标玩法。

这里的 UI 动画不是核心生命周期的一部分。核心已经在 RunRandom 调用时一次性算完,UI 只是消费结果并播放表现。

可观测生命周期

RollTrace 贯穿同一个 RollSessionId,记录普通骰面、组合 key、命中规则、执行 action、Lucky Dice 候选数量、随机值、选中结果、解析出的模式和最终 outcome。这是定位“为什么进了某个玩法”的主线。

证据