godot - 在工具模式脚本重新加载时调用函数

标签 godot

每次加载或重新加载脚本时如何调用函数?

tool

func _reload():
    print("Changes have been made and saved! Script has been reloaded")

func _load():
    print("Project was just opened! Script has been loaded")

最佳答案

我不确定你所说的重新加载是什么意思(或者为什么这是一个问题),但它可能是其中之一:

  • 当您将 Node 添加到场景树时(或者当您启用插件,即将 EditorPlugin 添加到编辑器的场景树时),或者当它加载时(加载项目时加载所有插件),_enter_tree中的代码将运行。同样,当它被删除时(或当插件被禁用时),_exit_tree 中的代码将运行。 请注意,对于手动运行的 tool 脚本 (EditorScript),这些不起作用。因此,创建一个 Node(或 EditorPlugin)。

  • 有一个信号会在对象的脚本发生更改时发出通知。它被适本地命名为“script_changed”。因此,如果您想处理工具脚本被修改并重新加载时的情况,您可以连接到该信号。您可能还想利用 _init 的功能,这是 Godot 调用的第一个虚拟方法(在 Node 上,您还可以使用 _enter_tree > 和_ready)。 信号“script_changed”在新脚本中调用_init之前发出。

  • 如果您想处理 Node 的属性被修改的情况(因为您提到“已进行更改”,所以我将其包括在内),您将必须使用 setter (使用setget),或者您可以拦截_set中的属性。

既然你提到“项目刚刚打开”,我想你想制作一个EditorPlugin,然后你可以使用_enter_tree_exit_tree >.

我还没有找到在保存编辑器上当前编辑的场景时获取通知的方法。但是,保存场景并不意味着 tool 脚本会以任何方式加载或重新加载。

关于godot - 在工具模式脚本重新加载时调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71099182/

相关文章:

godot - 有没有办法在 Godot 中创建真正的自定义类型?

godot - 如何从 godot 中的预加载脚本调用变量?

godot - 我如何检测运动学体 2d 和区域 2d 的碰撞

c++ - 进程启动时自动连接 VS Code C++ 调试器

Godot - 如何为我的库存添加工具提示?

animation - 戈多跳跃动画只播放第一帧

animation - 如何以编程方式在 Godot 中加载动画,将动画与骨架/骨架分开?

godot - 为什么我的游戏脚本没有按预期加载?

rust - Godot gdnative Rust 访问属性在编辑器中定义

godot - godot引擎中的up_direction参数