How do I access a variable from a different node's script

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By JasperC

This has been asked a lot, but none of the answers made sense to me. Basically, I have a variable in one script that is constantly being updated, and I need to export it to a different script to use it.

I believe I’m supposed to use get_node() to access the other script and then use dot notation like nodewiththescript.variableiwanttoexport somehow? I don’t get it.

How do I use get_node, is it just standing alone or is a variable assigned to it or what?

How do I use dot notation and the node.variable thing?

Help is much appreciated.

:bust_in_silhouette: Reply From: raadhuis

Let’s say you have two nodes:

NodeA
NodeB

Node A wants to access a variable inside the script attached to Node B. Inside the script attached to Node A you would need to define a variable with a reference to Node B as such:

onready var node_b = get_node("path/to/NodeB")  # The path in the tree, not the file system.

Once this is done you can access

node_b.variableiwanttoexport

in any way you want.

However, it’s important to note that this is only correct if NodeB is a child of NodeA. If they are siblings or are very far away in the tree it’s better to use signals to limit coupling and have a cleaner architecture. This would avoid problems in the future in case you changed the structure.

In that case you would emit a signal from NodeB indicating that the variable has been modified and pick it up in NodeA to get the updated value.

I really recommend you take a look at this guide, it’s been very helpful to me:

https://kidscancode.org/godot_recipes/img/node_access_theduriel.png