Narration使用 JS/TS 进行叙事
标签(labels)和步骤(steps)
解释Pixi’VN中标签(labels)和步骤(steps)的核心概念,详细说明引擎内的叙事流程是如何构建和管理的。
视觉小说,通常来说,是一系列带有图像和文本的场景序列。
Nomenclature
“标签”(label)一词借鉴自Ren'Py,在Ren'Py中它充当故事中的"书签"或"地标"。 在 ink 语言中,其对应的术语是“节点”(knot)。
“步骤”(step)一词由Pixi’VN引入,用于表示在一个标签内发生的单个动作或事件。
在Pixi'VN中,整个叙事流程都基于“标签”(labels)与“步骤”(steps)这两个概念。
label用于组织叙事;它可以作为故事的“书签”或章节。 从技术上来讲,label是一个充当steps容器的类。
“步骤”(steps)是在“标签”(labels)内发生的单个动作或事件。 “步骤”(step)被用于显示图像、文本和其他叙事元素。
游戏的基本生命周期如下:
- 游戏通过调用一个标签(
label)开始。 该label的第一个step会自动执行。 - 之后,通过将“下一步”功能连接到某个事件(如按钮点击),每次调用该功能时,就会执行该
label的下一个step。 某些step也可以启动其他label。 - 只有在所有步骤(
steps)都完成之后,游戏才会结束。 此时,Game.onEnd函数将会被触发。
Add
要创建一个label,请使用 newLabel() 函数。
该函数具有以下参数:
id: A unique identifier (string). 用于在游戏中引用该label(必须是唯一的)。steps:一个按顺序执行的函数数组。 要创建动态数组,可以点击此处了解更多信息。options(可选):包含label选项的对象:
import { narration, StepLabelProps } from '@drincs/pixi-vn'
export const startLabel = newLabel("start_label",
[
() => {
narration.dialogue = { character: liam, text: "Example of dialogue" }
},
(props: StepLabelProps, { labelId }) => narration.jump(labelId, props),
]
)