重命名节点时调用函数?
Invoke a function when renaming node?
非常直接 Q,节点重命名后如何调用函数?
我想也许 _set()
函数会被调用,但它不能用于重命名
从编辑器设置name
绕过_set()
。当您从代码中设置 name
时,您可以使用 _set()
进行拦截。
另一种选择是连接 "Renamed"
信号(所有 Node
都有)。
如果您希望在任何代码实例化 Node
有机会更改其名称之前发生连接,您可以尽早连接 _init
。
但是,只有当 Node
在场景树中时才会触发。
最后,一种检测 name
变化的方法 不管变化是如何发生的 是监听 NOTIFICATION_PATH_CHANGED
通知。
默认情况下,您会在 _notification
中获得 NOTIFICATION_PATH_CHANGED
,无需启用它或类似的东西。
它甚至在 Node
不在场景树中时也有效,这让我感到惊讶。
更令人惊讶的是,在将 Node
添加到场景树或将其移除(分别为 NOTIFICATION_ENTER_TREE
和 NOTIFICATION_EXIT_TREE
时,它不会触发,尽管有这些操作改变节点的路径。所以我认为 NOTIFICATION_PATH_CHANGED
是用词不当,应该是“NOTIFICATION_NAME_CHANGED”。
非常直接 Q,节点重命名后如何调用函数?
我想也许 _set()
函数会被调用,但它不能用于重命名
从编辑器设置name
绕过_set()
。当您从代码中设置 name
时,您可以使用 _set()
进行拦截。
另一种选择是连接 "Renamed"
信号(所有 Node
都有)。
如果您希望在任何代码实例化 Node
有机会更改其名称之前发生连接,您可以尽早连接 _init
。
但是,只有当 Node
在场景树中时才会触发。
最后,一种检测 name
变化的方法 不管变化是如何发生的 是监听 NOTIFICATION_PATH_CHANGED
通知。
默认情况下,您会在 _notification
中获得 NOTIFICATION_PATH_CHANGED
,无需启用它或类似的东西。
它甚至在 Node
不在场景树中时也有效,这让我感到惊讶。
更令人惊讶的是,在将 Node
添加到场景树或将其移除(分别为 NOTIFICATION_ENTER_TREE
和 NOTIFICATION_EXIT_TREE
时,它不会触发,尽管有这些操作改变节点的路径。所以我认为 NOTIFICATION_PATH_CHANGED
是用词不当,应该是“NOTIFICATION_NAME_CHANGED”。