+14 votes

Hello! I am currently working on another game project and I like to ask if there is any other way to access an another Node's GDScript to access the variable or property?

For example, I am working on an elevator, there are two objects, one is the Area2D Object with GDScript that allows the object to move out of the elevator and a Switch Object with GDScript as well that activates an animation and triggers a Variable boolean function to tell the Area2D not to let the player out until the animation is done.

Now this is where the "Switch" GDScript needs to access the Area2D's GDScript, where it can access the Variable to tell the player when to exit the elevator or not.

Is there any way whatsoever to let an object tap into another object's variable script?

in Engine by (208 points)

There are many way to do this, but the question for me is: what is the most manageable way to do this.
I don't like to have many "get_node" calls with paths who can be broken during developpement time. So I'm testing an autoload script who handle node paths automatically.
For the moment my script doesn't work. My signals connects functions fails because the first entered nodes try to connect to nodes who aren't entered yet.
I need to catch a signal who warn the script that the scene tree is complete.

2 Answers

+16 votes

There are several ways to access a variable from another node via GDscript. Probably the most elegant way is via setters and getters (functions that return or change a variable inside a node and can be called from another node). There is a simple for this over here. Alternatively you can use get_node("yourNode").get("yourVariable"), which is not as elegant but works as well.

by (217 points)
edited by

I've tried that, but all I got was this:

Invalid type in function 'get' in base 'Nil'. Cannot convert argument 1 from Nil to String.

That sounds as if you're either trying to access a variable that doesn't exist or haven't specified a variable which value you want to get.

broken link

Docs » Engine features » 2D » Custom drawing in 2D
will have a stable link to the 2.1 documentation @


broken link note :
is a moving target when you use ^ /latest/ or /stable/
instead of /2.1/ or /3.x/ which should remain constant

currently this documentation doesn't exist in the latest branch (yet)

heyy, thanks, it worked ,
i'm trying to access some variable from 1 function, so its helpfull, make the code shorter without have to write all variable or write more function

this even works but, you need to set as 'export' the variable you re going to use in another script.

** _variable's origin **
export [type] _variable;

** other script ** 
+14 votes

OK! I've found a better alternative, turns out that after you call a node, you simply access the variable like this:

get_node("object here").variable

Like that.

by (208 points)

func the same too

Welcome to Godot Engine Q&A, where you can ask questions and receive answers from other members of the community.

Please make sure to read Frequently asked questions and How to use this Q&A? before posting your first questions.
Social login is currently unavailable. If you've previously logged in with a Facebook or GitHub account, use the I forgot my password link in the login box to set a password for your account. If you still can't access your account, send an email to [email protected] with your username.