Skip to content

时间线编辑器

⚠️ 免责声明:本文档由 GLM4.7 自动生成,内容可能存在错误或不完整之处。请以人工书写的官方文档为准


时间线编辑器用于管理和可视化故事的时间线。支持事件、连接、嵌套节点、角色和文章绑定等高级功能。

打开方式

方法一:从包管理器打开(推荐)

  1. 在 VS Code 左侧活动栏中点击 包图标(📦)
  2. 在包管理器中找到时间线文件:
    • .tjson5 文件(如 story-timeline.tjson5
  3. 双击文件即可用时间线编辑器打开

双击 .tjson5 文件会自动使用时间线编辑器打开。

方法二:双击文件

在文件资源管理器中双击 .tjson5 文件,会自动使用时间线编辑器打开。

方法三:命令面板

  1. Ctrl+Shift+P 打开命令面板
  2. 输入 Andrea Novel Helper: 打开时间线编辑器
  3. 编辑器会在新列中打开

支持的文件格式

扩展名类型说明
.tjson5时间线文件专用时间线格式

数据格式

完整数据结构

json5
{
  events: [...],
  connections: [...]
}

事件 (Event)

每个事件包含以下字段:

字段类型必需说明
idstring事件唯一标识符
titlestring事件标题
groupstring事件所属组
typestring事件类型:main(主线)/ side(支线)
datestring事件日期
endDatestring结束日期(用于时间区间)
descriptionstring事件描述
timelessboolean是否为无时间事件
positionobject自定义位置 {x, y}
bindingsarray绑定的资源(角色/文章/地点/物品)
colorstring节点颜色(支持 hex、rgb、rgba 等 CSS 颜色)
data.typestring节点数据类型:main / side / condition
parentNodestring父节点 ID(用于嵌套)
widthnumber节点宽度(仅对父节点有效)
heightnumber节点高度(仅对父节点有效)
extentstring设置为 'parent' 限制子节点在父节点内移动
expandParentboolean拖动子节点时自动扩展父节点

事件示例

json5
{
  id: "event-1",
  title: "初遇",
  group: "第一章",
  type: "main",
  date: "2024-01-01",
  endDate: "2024-01-02",
  description: "主角首次相遇",
  timeless: false,
  position: { x: 100, y: 200 },
  bindings: [
    { uuid: "role-123", type: "character", label: "主角" },
    { uuid: "article-456", type: "article", documentTitle: "第一章.md" }
  ],
  color: "#E60033"
}

连接 (Connection)

每个连接包含以下字段:

字段类型必需说明
idstring连接唯一标识符
sourcestring源节点 ID
targetstring目标节点 ID
sourceHandlestring源节点手柄 ID(如条件节点的 'true''false'
targetHandlestring目标节点手柄 ID
labelstring连接标签
connectionTypestring连接类型

连接类型

类型说明
normal普通连接
time-travel时间旅行
reincarnation转世
parallel平行世界
dream梦境
flashback闪回
other其他

连接示例

json5
{
  id: "conn-1",
  source: "event-1",
  target: "event-2",
  sourceHandle: "true",
  label: "导致",
  connectionType: "flashback"
}

绑定 (Binding)

绑定可以将事件与资源关联:

类型说明
character角色
article文章/章节
location地点
item物品
other其他

界面功能

时间线画布

  • 可视化显示事件和连接
  • 支持缩放和平移
  • 拖拽节点调整位置
  • 实时数据同步

节点操作

操作说明
添加节点点击添加按钮或拖拽创建
编辑节点双击节点或右键编辑
删除节点选中后按 Delete 或右键删除
连接节点从一个节点拖拽到另一个节点
断开连接选中连接后按 Delete
嵌套节点将节点拖入父节点

资源绑定

功能说明
绑定角色从角色列表中选择并绑定
绑定文章从文章列表中选择并绑定
查看绑定悬停显示所有绑定
跳转到定义点击绑定的资源跳转

条件节点

  • 类型设置为 condition
  • 有两个输出手柄:truefalse
  • 用于表示分支剧情

嵌套节点

  • 设置 parentNode 将节点嵌套到父节点
  • extent: 'parent' 限制子节点在父节点内
  • expandParent: true 拖动子节点时自动扩展父节点

快捷键

快捷键功能
Delete删除选中的节点或连接
Ctrl+Z撤销
Ctrl+Y / Ctrl+Shift+Z重做
Ctrl+S保存
Ctrl+鼠标滚轮缩放
空格+拖拽平移画布

高级功能

时间区间

使用 dateendDate 表示持续一段时间的事件:

json5
{
  id: "event-long",
  title: "旅程",
  date: "2024-01-01",
  endDate: "2024-01-31"
}

无时间事件

设置 timeless: true 表示不在时间线上的事件(如背景设定)。

条件分支

使用条件节点表示分支剧情:

json5
{
  id: "choice-1",
  title: "选择",
  type: "condition",
  data: { type: "condition" }
}

连接时使用 sourceHandle

  • sourceHandle: "true" - 条件为真的分支
  • sourceHandle: "false" - 条件为假的分支

特殊连接类型

使用 connectionType 表示特殊的时间关系:

json5
{
  id: "conn-flashback",
  source: "current-event",
  target: "past-event",
  connectionType: "flashback",
  label: "回忆"
}

数据同步

实时同步

  • 编辑器中的更改实时同步到文件
  • 文件更改实时反映到编辑器
  • 自动触发 VS Code 的 dirty 状态

自动保存

根据 VS Code 的自动保存设置:

  • on - 自动保存模式
  • off - 手动保存模式

手动保存

  • Ctrl+S 保存
  • 或点击保存按钮

资源集成

角色集成

  • 从全局角色库中选择
  • 显示角色颜色和类型
  • 支持跳转到角色定义

文章集成

  • 从文件追踪系统获取文章列表
  • 支持 .md.txt 文件
  • 排除大纲文件和 novel-helper 目录

跳转功能

跳转类型说明
跳转到角色打开角色定义文件
跳转到文章打开文章文件

常见问题

如何创建时间区间?

设置 dateendDate 字段:

json5
{
  date: "2024-01-01",
  endDate: "2024-01-31"
}

如何创建分支剧情?

  1. 创建条件节点(type: "condition"
  2. 使用 sourceHandle: "true""false" 连接
  3. 为连接设置标签说明条件

如何嵌套节点?

  1. 创建父节点(设置 widthheight
  2. 设置子节点的 parentNode 为父节点 ID
  3. 可选:设置 extent: "parent" 限制移动范围

如何自定义节点颜色?

设置 color 字段:

json5
{
  color: "#E60033"
}

绑定的文章找不到?

  • 确保文章已被文件追踪系统追踪
  • 文件必须是 .md.txt 格式
  • 排除 novel-helper 目录下的文件

相关功能