GFRuntimeTask¶
API Reference / Standard / 类索引
- 路径:
addons/gf/standard/sequence/gf_runtime_task.gd - 模块:
Standard - 继承:
RefCounted - API:
public - 类别:协议与扩展点 (
protocol) - 首次版本:
6.0.0
可被运行时调度器管理的通用任务协议。 Runtime task 用于描述“占用一组运行时对象并按帧推进”的行为单元,例如角色默认状态、 临时交互、工具模式或项目自定义流程。任务只声明依赖、生命周期和完成条件,不解释业务含义。
成员概览¶
| 类型 | 名称 | 签名 |
|---|---|---|
| 属性 | task_id |
var task_id: StringName = &"" |
| 属性 | requirements |
var requirements: Array[Object] = [] |
| 属性 | interruptible |
var interruptible: bool = true |
| 方法 | _init |
func _init(p_requirements: Array[Object] = [], p_interruptible: bool = true) -> void: |
| 方法 | set_requirements |
func set_requirements(next_requirements: Array[Object]) -> GFRuntimeTask: |
| 方法 | add_requirement |
func add_requirement(requirement: Object) -> GFRuntimeTask: |
| 方法 | remove_requirement |
func remove_requirement(requirement: Object) -> bool: |
| 方法 | clear_requirements |
func clear_requirements() -> void: |
| 方法 | get_requirements |
func get_requirements() -> Array[Object]: |
| 方法 | has_requirement |
func has_requirement(requirement: Object) -> bool: |
| 方法 | set_interruptible |
func set_interruptible(value: bool) -> GFRuntimeTask: |
| 方法 | is_interruptible |
func is_interruptible() -> bool: |
| 方法 | is_scheduled |
func is_scheduled() -> bool: |
| 方法 | has_initialized |
func has_initialized() -> bool: |
| 方法 | initialize |
func initialize(_scheduler: GFRuntimeTaskScheduler) -> void: |
| 方法 | tick |
func tick(_delta: float) -> void: |
| 方法 | physics_tick |
func physics_tick(_delta: float) -> void: |
| 方法 | is_finished |
func is_finished() -> bool: |
| 方法 | end |
func end(_interrupted: bool) -> void: |
| 方法 | get_debug_snapshot |
func get_debug_snapshot() -> Dictionary: |
属性¶
task_id¶
- API:
public - 首次版本:
6.0.0
调试和诊断用任务标识。
requirements¶
- API:
public - 首次版本:
6.0.0
此任务占用的运行时对象。 相同 requirement 同一时间只能被一个任务占用。调度器会忽略已经释放的对象。
interruptible¶
- API:
public - 首次版本:
6.0.0
当其他任务请求相同 requirement 时,当前任务是否允许被中断。
方法¶
_init¶
- API:
public - 首次版本:
6.0.0
创建运行时任务。
参数:
| 名称 | 说明 |
|---|---|
p_requirements |
初始占用对象列表。 |
p_interruptible |
任务是否允许被其他任务中断。 |
set_requirements¶
- API:
public - 首次版本:
6.0.0
替换任务占用对象列表。
参数:
| 名称 | 说明 |
|---|---|
next_requirements |
新的占用对象列表。 |
返回:当前任务。
add_requirement¶
- API:
public - 首次版本:
6.0.0
添加一个占用对象。
参数:
| 名称 | 说明 |
|---|---|
requirement |
要添加的占用对象。 |
返回:当前任务。
remove_requirement¶
- API:
public - 首次版本:
6.0.0
移除一个占用对象。
参数:
| 名称 | 说明 |
|---|---|
requirement |
要移除的占用对象。 |
返回:成功移除时返回 true。
clear_requirements¶
- API:
public - 首次版本:
6.0.0
清空占用对象列表。
get_requirements¶
- API:
public - 首次版本:
6.0.0
返回仍然有效的占用对象副本。
返回:仍然有效的占用对象副本。
has_requirement¶
- API:
public - 首次版本:
6.0.0
判断任务是否占用指定对象。
参数:
| 名称 | 说明 |
|---|---|
requirement |
要检查的占用对象。 |
返回:任务占用该对象时返回 true。
set_interruptible¶
- API:
public - 首次版本:
6.0.0
设置任务是否可中断。
参数:
| 名称 | 说明 |
|---|---|
value |
是否允许被中断。 |
返回:当前任务。
is_interruptible¶
- API:
public - 首次版本:
6.0.0
判断任务是否可中断。
返回:任务允许被中断时返回 true。
is_scheduled¶
- API:
public - 首次版本:
6.0.0
判断任务是否已经进入调度器。
返回:任务已经进入调度器时返回 true。
has_initialized¶
- API:
public - 首次版本:
6.0.0
判断任务本轮调度是否已经初始化。
返回:本轮调度已经完成初始化时返回 true。
initialize¶
- API:
public - 首次版本:
6.0.0
初始化任务。 调度器会在第一次推进任务前调用此方法。子类可在此读取架构、准备本轮状态或发出开始事件。
参数:
| 名称 | 说明 |
|---|---|
_scheduler |
当前调度器。 |
tick¶
- API:
public - 首次版本:
6.0.0
按帧推进任务。
参数:
| 名称 | 说明 |
|---|---|
_delta |
帧间隔秒数。 |
physics_tick¶
- API:
public - 首次版本:
6.0.0
按物理帧推进任务。
参数:
| 名称 | 说明 |
|---|---|
_delta |
物理帧间隔秒数。 |
is_finished¶
- API:
public - 首次版本:
6.0.0
判断任务是否已经完成。 默认任务会在初始化后的第一次检查中完成。需要跨帧运行的任务应重写此方法。
返回:任务已完成时返回 true。
end¶
- API:
public - 首次版本:
6.0.0
结束任务。 [param interrupted] 为 [code]true[/code] 时表示任务被其他任务或调度器取消。
参数:
| 名称 | 说明 |
|---|---|
_interrupted |
为 true 时表示任务被其他任务或调度器取消。 |
get_debug_snapshot¶
- API:
public - 首次版本:
6.0.0
返回任务诊断快照。
返回:任务诊断快照。
结构:
return: Dictionary with task_id, interruptible, scheduled, initialized, and requirement_ids.