场景和对话
场景定义
可以使用 scene 块用于创建一个场景。
scene <id>[: <name>] {
// props
}[=> <next>]属性
| 属性 | 类型 | 描述 | 默认值 |
|---|---|---|---|
<id> | string | 该场景的 id | 必填 |
<name> | string | 该场景的显示名称 | <id> |
next | string | 该场景故事结束后下一步回到哪儿 | 自动推断 |
<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> |
next | string | 该场景故事结束后下一步回到哪儿 | 自动推断 |
<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; }
}