Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | obstsalat |
Hello everyone,
I try to access a function from my TileMap-Node through another Node2D-Node.
Both Nodes are under a scene/node called “game_window”.
In the basic Node2D I wrote
onready var tileset_node = get_node(“/root/game_window/TileMap”)
but it get the error message that the node isn’t found. I got the path by displaying it with get_path(). The get_node() function only works for me when the node I try to access is a subnode, absolute paths don’t seem to work.
Does anyone know why it doesnt work out?
Two ideas:
Only refer to nodes that are children of the node you have as root for the scene. Don’t try to refer to a higher-level node from a leaf. Accessing with an absolute path isn’t needed.
If you use setget anywhere in the script, and those setters set things on referenced nodes… you’ll probably encounter the exact problem I had. Godot runs setters on export variables before _init and _ready… so this works around that by killing the setter early if _ready has never been called.
var is_ready = false
var setter_thing setget set_setter_thing
var set_setter_thing(setter):
if not is_ready:
return
# whatever you need to do
var _ready():
# everything needed on ready
is_ready = true
Jimmio92 | 2019-07-25 01:15