LogoPixi’VN
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选项的对象:
    • onStepStart(可选):在每个step之前执行的函数。 点击此处查看更多信息。
    • onStepEnd(可选):在每个step之后执行的函数。 点击此处查看更多信息。
    • onLoadingLabel (可选): 如果步骤( step )索引为 0,或在加载存档文件时,在onStepStart中执行的函数。 点击此处查看更多信息。
labels/startLabel.ts
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),
    ]
)

On this page