Implement Scene Unique Nodes

Implements https://github.com/godotengine/godot-proposals/issues/4096

* Nodes can be marked unique to the scene in the editor (or via code).
* Unique nodes can be accessed via the **%** prefix at any point in the path. From that point in the path (depending on whether the scene of the path is), the unique node will be fetched.
* Implementation is very optimal, as these nodes are cached.
This commit is contained in:
reduz
2022-04-16 12:23:32 +02:00
parent f4b0c7a1ea
commit 8580f377a3
12 changed files with 190 additions and 7 deletions

View File

@@ -492,6 +492,12 @@
Returns [code]true[/code] if the node is processing unhandled key input (see [method set_process_unhandled_key_input]).
</description>
</method>
<method name="is_unique_name_in_owner" qualifiers="const">
<return type="bool" />
<description>
Returns whether the node is an unique name for all the other nodes owned by its [member owner].
</description>
</method>
<method name="move_child">
<return type="void" />
<argument index="0" name="child_node" type="Node" />
@@ -719,6 +725,13 @@
Sets whether this is an instance load placeholder. See [InstancePlaceholder].
</description>
</method>
<method name="set_unique_name_in_owner">
<return type="void" />
<argument index="0" name="enable" type="bool" />
<description>
Sets this node's name as the unique name in its [member owner]. This allows the node to be accessed as [code]%Name[/code] instead of the full path, from any node within that scene.
</description>
</method>
<method name="update_configuration_warnings">
<return type="void" />
<description>