GFDialogueRunner¶
API Reference / Dialogue / 类索引
- 路径:
addons/gf/extensions/dialogue/runtime/gf_dialogue_runner.gd - 模块:
Dialogue - 继承:
RefCounted - API:
public - 类别:运行时服务 (
runtime_service) - 首次版本:
3.17.0
通用对话资源执行器。 Runner 只沿 GFDialogueResource 的行、响应、跳转、条件和 mutation 推进, 并发出结构化事件。显示、输入、存档和业务状态由项目层决定。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 信号 | dialogue_started |
signal dialogue_started(resource: GFDialogueResource) |
| 信号 | line_reached |
signal line_reached(line: GFDialogueLine) |
| 信号 | mutation_requested |
signal mutation_requested(mutation_id: StringName, payload: Variant, line: GFDialogueLine) |
| 信号 | dialogue_ended |
signal dialogue_ended(resource: GFDialogueResource) |
| 信号 | line_blocked |
signal line_blocked(line_id: StringName, reason: StringName) |
| 属性 | max_steps_per_advance |
var max_steps_per_advance: int = 1024 |
| 属性 | skip_blocked_lines |
var skip_blocked_lines: bool = true |
| 方法 | start |
func start( resource: GFDialogueResource, start_line_id: StringName = &"", context: GFDialogueContext = null ) -> GFDialogueLine: |
| 方法 | advance |
func advance(response_id: StringName = &"") -> GFDialogueLine: |
| 方法 | choose_response |
func choose_response(response_id: StringName) -> GFDialogueLine: |
| 方法 | stop |
func stop() -> void: |
| 方法 | get_current_line |
func get_current_line() -> GFDialogueLine: |
| 方法 | get_available_responses |
func get_available_responses() -> Array[GFDialogueResponse]: |
| 方法 | is_running |
func is_running() -> bool: |
| 方法 | get_debug_snapshot |
func get_debug_snapshot() -> Dictionary: |
信号¶
dialogue_started¶
- API:
public
对话开始时发出。
参数:
| 名称 | 说明 |
|---|---|
resource |
对话资源。 |
line_reached¶
- API:
public
到达可展示文本行时发出。
参数:
| 名称 | 说明 |
|---|---|
line |
当前行。 |
mutation_requested¶
- API:
public
请求执行 mutation 时发出。
参数:
| 名称 | 说明 |
|---|---|
mutation_id |
mutation ID。 |
payload |
mutation 载荷。 |
line |
当前行。 |
结构:
payload: mutation 处理器接收的任意项目载荷;框架只透传。
dialogue_ended¶
- API:
public
对话结束时发出。
参数:
| 名称 | 说明 |
|---|---|
resource |
对话资源。 |
line_blocked¶
- API:
public
推进被阻止时发出。
参数:
| 名称 | 说明 |
|---|---|
line_id |
被阻止的行 ID。 |
reason |
原因。 |
属性¶
max_steps_per_advance¶
- API:
public
最多连续推进的非展示行数量,避免错误资源无限循环。
skip_blocked_lines¶
- API:
public
条件不通过且没有 fallback 时,是否尝试跳到默认后继。
方法¶
start¶
- API:
public
func start( resource: GFDialogueResource, start_line_id: StringName = &"", context: GFDialogueContext = null ) -> GFDialogueLine:
开始对话。
参数:
| 名称 | 说明 |
|---|---|
resource |
对话资源。 |
start_line_id |
可选起始行 ID。 |
context |
可选上下文。 |
返回:到达的第一条可展示行;结束或失败时返回 null。
advance¶
- API:
public
推进对话。
参数:
| 名称 | 说明 |
|---|---|
response_id |
可选响应 ID;非空时从当前行选择响应后推进。 |
返回:到达的下一条可展示行;结束或失败时返回 null。
choose_response¶
- API:
public
选择当前行响应并推进。
参数:
| 名称 | 说明 |
|---|---|
response_id |
响应 ID。 |
返回:到达的下一条可展示行;结束或失败时返回 null。
stop¶
- API:
public
结束当前对话。
get_current_line¶
- API:
public
获取当前行。
返回:当前可展示行;没有时返回 null。
get_available_responses¶
- API:
public
获取当前可用响应。
返回:响应列表。
is_running¶
- API:
public
检查是否正在运行。
返回:运行中返回 true。
get_debug_snapshot¶
- API:
public
获取运行快照。
返回:调试快照。
结构:
return: 包含 is_running、current_line_id、has_resource 和 context_values 字段的 Dictionary。