跳转至

GFCameraDirector3D

API Reference / Camera / 类索引

  • 路径:addons/gf/extensions/camera/nodes/gf_camera_director_3d.gd
  • 模块:Camera
  • 继承:Node
  • API:public
  • 类别:运行时服务 (runtime_service)
  • 首次版本:3.17.0

通用 3D 相机编排节点。 Director 从显式路径或分组中收集 GFCameraRig3D,按优先级选择当前 Rig, 并把过渡后的 Transform 应用到 Camera3D。它不规定目标含义、输入来源或业务流程。

成员概览

类型 名称 签名
信号 active_rig_changed signal active_rig_changed(previous_rig: GFCameraRig3D, new_rig: GFCameraRig3D)
信号 camera_pose_applied signal camera_pose_applied(rig: GFCameraRig3D)
枚举 UpdateMode enum UpdateMode
属性 camera_path var camera_path: NodePath = NodePath("")
属性 rig_paths var rig_paths: Array[NodePath] = []
属性 collect_group_rigs var collect_group_rigs: bool = true
属性 rig_group_name var rig_group_name: StringName = &"gf_camera_rig_3d"
属性 camera_scope_path var camera_scope_path: NodePath = NodePath("")
属性 camera_channel var camera_channel: StringName = &""
属性 update_mode var update_mode: UpdateMode = UpdateMode.IDLE
属性 default_blend var default_blend: GFCameraBlend = null
属性 make_current_on_apply var make_current_on_apply: bool = false
方法 get_camera func get_camera() -> Camera3D:
方法 get_active_rig func get_active_rig() -> GFCameraRig3D:
方法 collect_candidate_rigs func collect_candidate_rigs() -> Array[GFCameraRig3D]:
方法 refresh_active_rig func refresh_active_rig(force_snap: bool = false) -> GFCameraRig3D:
方法 set_active_rig func set_active_rig(rig: GFCameraRig3D, force_snap: bool = false) -> bool:
方法 clear_active_rig_override func clear_active_rig_override(force_snap: bool = false) -> GFCameraRig3D:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:
方法 process_camera func process_camera(delta: float) -> bool:

信号

active_rig_changed

  • API:public
signal active_rig_changed(previous_rig: GFCameraRig3D, new_rig: GFCameraRig3D)

当前 Rig 变化后发出。

参数:

名称 说明
previous_rig 上一个 Rig。
new_rig 新 Rig。

camera_pose_applied

  • API:public
signal camera_pose_applied(rig: GFCameraRig3D)

相机姿态应用后发出。

参数:

名称 说明
rig 当前 Rig。

枚举

UpdateMode

  • API:public
enum UpdateMode {
    ## 在 _process 中更新。
    IDLE,
    ## 在 _physics_process 中更新。
    PHYSICS,
    ## 只在 process_camera() 被显式调用时更新。
    MANUAL,
}

Director 自动更新模式。

属性

camera_path

  • API:public
var camera_path: NodePath = NodePath("")

要控制的 Camera3D。

rig_paths

  • API:public
var rig_paths: Array[NodePath] = []

显式候选 Rig 路径。

结构:

  • rig_paths: Array[NodePath],按顺序保存显式候选 GFCameraRig3D 节点路径。

collect_group_rigs

  • API:public
var collect_group_rigs: bool = true

是否按分组收集候选 Rig。

rig_group_name

  • API:public
var rig_group_name: StringName = &"gf_camera_rig_3d"

候选 Rig 分组名。

camera_scope_path

  • API:public
  • 首次版本:8.0.0
var camera_scope_path: NodePath = NodePath("")

分组候选 Rig 的收集作用域。为空时使用 Director 父节点。

camera_channel

  • API:public
  • 首次版本:8.0.0
var camera_channel: StringName = &""

分组候选 Rig 的收集频道。为空时只收集默认频道 Rig。

update_mode

  • API:public
var update_mode: UpdateMode = UpdateMode.IDLE

自动更新模式。

default_blend

  • API:public
  • 首次版本:6.0.0
var default_blend: GFCameraBlend = null

默认过渡资源。Rig 没有设置 blend 时使用它。

make_current_on_apply

  • API:public
  • 首次版本:7.0.0
var make_current_on_apply: bool = false

应用姿态时是否显式把 Camera3D 设为当前相机。

方法

get_camera

  • API:public
func get_camera() -> Camera3D:

获取当前相机。

返回:Camera3D;不存在时返回 null。

get_active_rig

  • API:public
func get_active_rig() -> GFCameraRig3D:

获取当前激活 Rig。

返回:当前 Rig;没有时返回 null。

collect_candidate_rigs

  • API:public
func collect_candidate_rigs() -> Array[GFCameraRig3D]:

收集候选 Rig。

返回:候选 Rig 列表。

结构:

  • return: Array[GFCameraRig3D],已去重并按优先级排序的候选 Rig。

refresh_active_rig

  • API:public
func refresh_active_rig(force_snap: bool = false) -> GFCameraRig3D:

刷新当前激活 Rig。

参数:

名称 说明
force_snap 为 true 时立即切到新 Rig。

返回:当前 Rig。

set_active_rig

  • API:public
  • 首次版本:6.0.0
func set_active_rig(rig: GFCameraRig3D, force_snap: bool = false) -> bool:

显式设置当前 Rig,并进入手动覆盖模式。 手动覆盖模式下,refresh_active_rig() 不会自动切换到更高优先级 Rig; 调用 clear_active_rig_override() 后才恢复自动选择。

参数:

名称 说明
rig 新 Rig;可为 null。
force_snap 为 true 时立即切换。

返回:设置成功返回 true。

clear_active_rig_override

  • API:public
  • 首次版本:6.0.0
func clear_active_rig_override(force_snap: bool = false) -> GFCameraRig3D:

清除手动 Rig 覆盖,并立即恢复自动选择。

参数:

名称 说明
force_snap 为 true 时立即切换。

返回:自动选择后的当前 Rig。

get_debug_snapshot

  • API:public
  • 首次版本:8.0.0
func get_debug_snapshot() -> Dictionary:

获取 Director 调试快照。

返回:调试快照。

结构:

  • return: Dictionary,包含 has_camera、has_active_rig、active_rig_path、active_rig_is_manual_override、is_blending 和 last_process。

process_camera

  • API:public
  • 首次版本:8.0.0
func process_camera(delta: float) -> bool:

推进并应用相机姿态。

参数:

名称 说明
delta 秒。

返回:本帧实际应用相机姿态时返回 true;无可用 Rig 时返回 false。