+7 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?

asked Mar 21, 2016 in Engine by Corruptinator (182 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

+7 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.

answered Mar 21, 2016 by PixelWizzard (214 points)
edited Mar 21, 2016 by PixelWizzard

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 @
http://docs.godotengine.org/en/2.1/learning/features/2d/custom_drawing_in_2d.html?highlight=setget

 

broken link note :
"docs.godotengine.org/en/latest/../some_tutorial"
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)

+7 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.

answered Mar 21, 2016 by Corruptinator (182 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 How to use this Q&A? before posting your first questions.