Skip to content

场景编排:AScene

一个完整的故事通常由多个场景组成,每个场景又包含若干对话。AScene 组件用于定义这样的场景,它需要两个属性:

  • id:场景的唯一标识符(字符串)。
  • name:场景的名称,用于编辑器或调试显示。
html
<AShell>
  <AScene id="forest" name="迷雾森林">
    <ADialog id="d1">
      <ALine>你走进了浓雾弥漫的森林。</ALine>
    </ADialog>
  </AScene>
  <AScene id="village" name="宁静村庄">
    <ADialog id="d2">
      <ALine>村庄里炊烟袅袅,孩子们在奔跑嬉戏。</ALine>
    </ADialog>
  </AScene>
</AShell>

自动推断场景的 next

AScene 同样支持自动推断 next。它会把跳转目标设为其内部第一个对话的 ID。在上述例子中:

  • forestnext 自动指向 "d1"
  • villagenext 自动指向 "d2"

这样,当游戏逻辑跳转到某个场景时,就会自动进入该场景的第一个对话,无需额外配置。

跨场景对话链

ADialog 的自动推断能力是全局的,它会按照整个模板中的出现顺序找到下一个对话,哪怕它们分属不同的场景:

html
<AScene id="s1" name="场景一">
  <ADialog id="d1">
    <ALine>场景一的对话</ALine>
  </ADialog>
</AScene>
<AScene id="s2" name="场景二">
  <ADialog id="d2">
    <ALine>场景二的对话</ALine>
  </ADialog>
</AScene>

d1next 会被自动设为 "d2",实现了跨场景的自然叙事流。如果你希望某个对话之后暂时没有后续,可以显式地将 next 设置为 null