每次加载或重新加载脚本时如何调用函数?
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/