'Invoke a function when renaming node?
pretty straight forward Q, How do I invoke a function when the node is renamed?
I thought maybe _set() function would be invoked but it doesn't work for renaming
Solution 1:[1]
Setting the name from the editor bypasses _set(). You can use _set() for intercepting when you set the name from code.
Another option is to connect the "Renamed" signal (all Nodes have it).
You can connect as early as _init if you want it to happen before whatever code is instancing the Node has a chance to change its name.
However, this one only triggers if the Node is inside the scene tree.
And, finally, a way to detect changes of name regardless of how the change happens is to listen for the NOTIFICATION_PATH_CHANGED notification.
You get NOTIFICATION_PATH_CHANGED in _notification by default, no need to enable it or anything like that.
It even works when the Node is not in the scene tree, which I find surprising.
Even more surprising, it does not trigger when adding the Node to the scene tree, or removing it (those would be NOTIFICATION_ENTER_TREE and NOTIFICATION_EXIT_TREE respectively), despite those actions changing the path the node. So I believe NOTIFICATION_PATH_CHANGED is a misnomer, it should be "NOTIFICATION_NAME_CHANGED".
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Theraot |
