场景编排: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。在上述例子中:
forest的next自动指向"d1"。village的next自动指向"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>d1 的 next 会被自动设为 "d2",实现了跨场景的自然叙事流。如果你希望某个对话之后暂时没有后续,可以显式地将 next 设置为 null。