跳转至

Dialogue 通用对话资源

Dialogue 扩展提供抽象对话资源、运行上下文和对话推进器。它负责表达行、响应、跳转、条件和 mutation 请求,不规定剧本语言、对话框 UI、本地化表、角色数据、存档结构或项目状态字段。

Dialogue 适合作为对话流程的最小运行时抽象。项目可以在自己的导入器、图编辑器、UI、文本解析器、条件处理器、mutation 处理器和存档系统中解释业务语义。

阅读入口

  • GFDialogueResource:保存起始行和行集合。
  • GFDialogueLine:表达文本、mutation、跳转或结束点。
  • GFDialogueResponse:描述可选响应及其后继。
  • GFDialogueContext:保存运行时值表,并提供条件、mutation 和文本解析回调。
  • GFDialogueRunner:推进资源,发出行、响应、mutation 和结束信号。

最小流程

var resource := GFDialogueResource.new()
resource.start_line_id = &"start"

var start := GFDialogueLine.new()
start.line_id = &"start"
start.text = "hello_key"
start.next_line_id = &"end"
resource.set_line(start)

var end := GFDialogueLine.new()
end.line_id = &"end"
end.kind = GFDialogueLine.LineKind.END
resource.set_line(end)

var context := GFDialogueContext.new()
context.text_resolver = func(text_key: String, _line: GFDialogueLine) -> String:
    return tr(text_key)

var runner := GFDialogueRunner.new()
runner.start(resource, &"", context)
runner.advance()

使用边界

  • 条件和 mutation 只保存 ID 与载荷,实际含义由项目通过 GFDialogueContext 的回调处理。
  • Runner 不创建 UI,也不读取输入;项目界面负责显示 get_current_line()get_available_responses()
  • 复杂导入、分支可视化、语音、字幕、本地化表和存档恢复应放在项目层或独立插件里。
  • validate_resource() 只报告资源结构问题,不判断剧情逻辑是否合理。

API Reference

完整类、方法和信号列表见 Dialogue API Reference