Skip to content

场景和对话 ​

场景定义 ​

可以使用 scene 块用于创建一个场景。

scene <id>[: <name>] {
    // props
}[=> <next>]

属性 ​

属性类型描述默认值
<id>string该场景的 id必填
<name>string该场景的显示名称<id>
nextstring该场景故事结束后下一步回到哪儿自动推断
<next>target该场景故事结束后下一步回到哪儿,优先级高于 next自动推断

事件 ​

onEnter

  • 触发时机:当场景被进入。
  • 参数:无。
  • 返回值:void
  • 默认值:() => {}

onLeave

  • 触发时机:当场景被离开。
  • 参数:无。
  • 返回值:void
  • 默认值:() => {}

场景体内可包含零个或多个 dialog,作为该场景的子对话,会在进入之后自动触发。

示例:

scene forest: "迷雾森林" {
    onEnter { Adv.audio.play("/music/forest.mp3", "bgm"); }

    dialog first_dialog {
        "你走进了浓雾弥漫的森林。"
    }
    dialog second_dialog {
        "你继续前行。"
    }
} => after_all;

对话定义 ​

对话可定义在顶层或场景内部,语法完全一致。

语法 ​

dialog [<id>] [in <sceneId>] {
    // 属性
}[=> <next>]

属性 ​

属性类型描述默认值
<id>string该场景的 id引擎随机生成
<name>string该场景的显示名称<id>
nextstring该场景故事结束后下一步回到哪儿自动推断
<next>target该场景故事结束后下一步回到哪儿,优先级高于 next自动推断
<sceneId>[scene]id强制对话发生在指定场景。null

事件 ​

onStart

  • 触发时机:当对话开始。
  • 参数:无。
  • 返回值:void
  • 默认值:() => {}

onFinish

  • 触发时机:当对话结束。
  • 参数:无。
  • 返回值:void
  • 默认值:() => {}

可以在 dialog 体内使用脚本内容项,这个内容会在下一节中详细讲解。

示例:

dialog diary_read in attic {
    next = corridor_dialog
    onStart { Adv.status.diaryRead = 1; }
}