_bind_methods

_bind_methods 是 Godot C++ 扩展(GDNative/GDExtension)中用于注册类方法、属性、信号到 Godot 引擎的特殊函数。它通常是静态或受保护成员函数,在类初始化时由 Godot 自动调用。你在 _bind_methods 里用 ClassDB::bind_methodADD_PROPERTYADD_SIGNAL 等宏,把 C++ 的方法、属性、信号暴露给 Godot 脚本和编辑器。

Godot C++ 扩展中常见的特殊函数还有:

  • _init():对象初始化时调用(类似构造函数,但可被脚本重载)。
  • _ready():节点加入场景树后调用。
  • _process(delta):每帧调用,用于逻辑更新。
  • _physics_process(delta):每帧物理步进时调用。
  • _notification(what):节点状态变化时的回调。
  • _enter_tree() / _exit_tree():节点进入/离开场景树时调用。
  • _input(event):输入事件处理。
  • _unhandled_input(event):未被处理的输入事件。

这些函数在 Godot 脚本(GDScript/C#/C++)中都可以重载,实现自定义逻辑。C++ 扩展中,只有 _bind_methods 是必须实现的(用于注册),其他函数根据需要重载。

_process_physics_process 有何区别

在 Godot 引擎中,_process_physics_process 的主要区别如下:

  • _process(delta):每帧调用一次,受帧率影响,适合处理动画、UI、非物理相关的逻辑。
  • _physics_process(delta):以固定的物理帧率(通常为 60Hz)调用,适合处理物理相关的逻辑(如移动、碰撞检测等),保证物理计算的稳定性。

简而言之:

  • _process 用于非物理逻辑,帧率不固定。
  • _physics_process 用于物理逻辑,帧率固定。

_notification

_notification 是 Godot 引擎的底层回调函数,在节点生命周期的各个阶段由引擎自动调用。它会在如下时机被触发:

  • 节点被实例化、进入/退出场景树、进入/退出世界时(如 NOTIFICATION_ENTER_TREENOTIFICATION_EXIT_TREENOTIFICATION_ENTER_WORLDNOTIFICATION_EXIT_WORLD
  • 节点准备就绪(NOTIFICATION_READY
  • 每帧物理/处理循环(NOTIFICATION_PHYSICS_PROCESSNOTIFICATION_PROCESS
  • 节点可见性、变换、资源热重载等状态变化时
  • 编辑器保存、删除、崩溃等特殊事件

你无需手动调用 _notification,只需在类中实现它并根据 p_what 参数处理对应事件即可。引擎会在合适的时机自动调用。

Node::update_configuration_warnings

update_configuration_warnings() 函数的作用是更新节点的配置信息警告。它通常用于在 Godot 编辑器中,当节点的配置存在潜在问题或不推荐的设置时,触发重新检测和显示警告信息。该函数会调用底层的 Godot 引擎方法,刷新节点的警告状态,便于开发者及时发现和修正配置问题。