Skip to content

底层数据结构和节点图解析

数据结构体设计

Conversation

ID: 1077936132

定义为从玩家打开对话悬浮窗到最后关闭悬浮窗结束的整个过程。一个剧本播放途中,若无意外情况,应当无法使用 WASD 交互,仅能选择选项卡或点击推进。剧本的唯一标识符是剧本名称,导入命名时变量应手动与剧本名称统一。

剧本名称
字符串
剧本的唯一标识名称,需与外部文件名一致。
起始节点
字符串
存储当前剧本初始化时进入的首个节点名称。
节点列表
字典 字符串 Node
包含当前剧本下所有的节点。字符串代表节点名称。
对白列表
字典 字符串 Segment
包含当前剧本下所有的对白。字符串代表对白名称。

Node

ID: 1077936131

定义为一个基本逻辑判断的单元。在其中可按任意顺序复用播放 Segment,随后触发不同的逻辑以形成对话树。节点的唯一标识符是节点名称,若无意外情况,在节点编辑器中会自动与 Conversation 中的键统一。

节点名称
字符串
节点的唯一标识名称。
对白引用列表
列表 字符串
按顺序需要播放的 Segment 名称列表。
选项卡映射表
字典 整数 字符串
仅在展示选项卡模式下有数据。键为选项卡ID,值为目标节点名。
节点映射表
字典 字符串 字符串
存储除选项卡外的逻辑跳转路由。值为目标节点名称。
结束行为
字符串
结束对话、展示选项卡、直接跳转、变量检定。
触发信号
字符串
无操作、节点开始时、节点结束时。
变量参数
字典 字符串 字符串
检定专用打包字典,包含目标实体、目标变量名、目标类型、运算符、运算字符串。
检定整数值
整数
当检定类型为整数且非枚举时,存储填写的整数运算值。

节点映射表 (跳转路由图解)

  • 直接跳转"0" ➔ 目标节点
  • 布尔检定"true" / "false" ➔ 目标节点
  • 自定义枚举"任意检定结果" ➔ 目标节点

Segment

ID: 1077936129

定义为一段相似的演出方式,无需其它操作即可流畅进行的对话。如:在同一对白中玩家只需要连续点击左键推进剧情即可。对白的唯一标识符是对白名称,若无意外情况,在节点编辑器中会自动与 Conversation 中的键统一。

对白名称
字符串
对白的唯一标识名称。
台词列表
列表 Dialogue
有序的台词列表。
触发信号
字符串
无操作、对白开始时、对白结束时。
对白类型
字符串
站桩对话、黑幕、白幕。

Dialogue

ID: 1077936130

定义为一句具体的台词内容、说话人、称号等元数据。台词的唯一标识是其在 Segment 的台词列表中的序号。

台词文本
列表 字符串
打字机动画预处理后的字串递增列表。
说话人
字符串
当前行发言角色的显示名字。
称号
字符串
说话人头顶显示的称号。
持续时间
浮点数
不可点击快进的最低强制等待秒数。
触发信号
字符串
无操作、台词开始时、台词结束时。

AutoConversation

ID: 1077936134

定义为一个不包含交互逻辑控制的自动线性剧本(例如边走边说)。不阻断玩家操作,无选项卡,只需按照固定的时间顺序播放对白段落(Segment)。

剧本名称
字符串
自动剧本的唯一标识名称,需与外部文件名一致。
台词序列
列表 Dialogue
按顺序依次播放的纯台词 (Dialogue) 结构体列表。
时刻表
列表 浮点数
按顺序记录所有台词触发时刻的列表。首位为初始等待时间,后续由各台词时长累加而成。

_editor_metadata

这是编辑器内置的数据,对千星沙箱没有作用,导入时会被千星沙箱忽略。

因此,如果从千星沙箱重新导出结构体,这些数据也会丢失。

dictPositions
字典 节点名称 三维向量
编辑器内节点排版的二维空间坐标记录 (X,0,Y)。
listChars
列表 角色对象
当前剧本的群组全局角色预设列表(仅用于本地辅助编辑)。
dictTabs
字典 字符串 整数
所有可能出现的选项卡集合(键为选项卡文本,值为选项卡ID)。
version
字符串
上次执行导出操作时,该台词编辑器的内核版本号。
description
字符串
作者为该剧本写入的全局描述和备注。
viewport
对象
包含 x, y, scale。记录上次编辑时蓝图视口的镜头状态,用于自动记忆并恢复位置。

底层沙箱解释器运行流程

(待补充内容:分析节点引脚在底层代码中的反序列化与事件推演)

返回文档