底层数据结构和节点图解析
数据结构体设计
Conversation
ID: 1077936132
定义为从玩家打开对话悬浮窗到最后关闭悬浮窗结束的整个过程。一个剧本播放途中,若无意外情况,应当无法使用 WASD 交互,仅能选择选项卡或点击推进。剧本的唯一标识符是剧本名称,导入命名时变量应手动与剧本名称统一。
剧本的唯一标识名称,需与外部文件名一致。
存储当前剧本初始化时进入的首个节点名称。
包含当前剧本下所有的节点。字符串代表节点名称。
包含当前剧本下所有的对白。字符串代表对白名称。
Node
ID: 1077936131
定义为一个基本逻辑判断的单元。在其中可按任意顺序复用播放 Segment,随后触发不同的逻辑以形成对话树。节点的唯一标识符是节点名称,若无意外情况,在节点编辑器中会自动与 Conversation 中的键统一。
节点的唯一标识名称。
按顺序需要播放的 Segment 名称列表。
仅在展示选项卡模式下有数据。键为选项卡ID,值为目标节点名。
存储除选项卡外的逻辑跳转路由。值为目标节点名称。
结束对话、展示选项卡、直接跳转、变量检定。
无操作、节点开始时、节点结束时。
检定专用打包字典,包含目标实体、目标变量名、目标类型、运算符、运算字符串。
当检定类型为整数且非枚举时,存储填写的整数运算值。
节点映射表 (跳转路由图解)
- 直接跳转:
"0"➔ 目标节点 - 布尔检定:
"true"/"false"➔ 目标节点 - 自定义枚举:
"任意检定结果"➔ 目标节点
Segment
ID: 1077936129
定义为一段相似的演出方式,无需其它操作即可流畅进行的对话。如:在同一对白中玩家只需要连续点击左键推进剧情即可。对白的唯一标识符是对白名称,若无意外情况,在节点编辑器中会自动与 Conversation 中的键统一。
对白的唯一标识名称。
有序的台词列表。
无操作、对白开始时、对白结束时。
站桩对话、黑幕、白幕。
Dialogue
ID: 1077936130
定义为一句具体的台词内容、说话人、称号等元数据。台词的唯一标识是其在 Segment 的台词列表中的序号。
打字机动画预处理后的字串递增列表。
当前行发言角色的显示名字。
说话人头顶显示的称号。
不可点击快进的最低强制等待秒数。
无操作、台词开始时、台词结束时。
AutoConversation
ID: 1077936134
定义为一个不包含交互逻辑控制的自动线性剧本(例如边走边说)。不阻断玩家操作,无选项卡,只需按照固定的时间顺序播放对白段落(Segment)。
自动剧本的唯一标识名称,需与外部文件名一致。
按顺序依次播放的纯台词 (Dialogue) 结构体列表。
按顺序记录所有台词触发时刻的列表。首位为初始等待时间,后续由各台词时长累加而成。
_editor_metadata
这是编辑器内置的数据,对千星沙箱没有作用,导入时会被千星沙箱忽略。
因此,如果从千星沙箱重新导出结构体,这些数据也会丢失。
编辑器内节点排版的二维空间坐标记录 (X,0,Y)。
当前剧本的群组全局角色预设列表(仅用于本地辅助编辑)。
所有可能出现的选项卡集合(键为选项卡文本,值为选项卡ID)。
上次执行导出操作时,该台词编辑器的内核版本号。
作者为该剧本写入的全局描述和备注。
包含
x, y, scale。记录上次编辑时蓝图视口的镜头状态,用于自动记忆并恢复位置。 底层沙箱解释器运行流程
(待补充内容:分析节点引脚在底层代码中的反序列化与事件推演)