Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Black Monkey |
Code in Parent:
extends Node2D
onready var chi = get_node("child")
var par_var
func _ready():
chi.chi_var=0
chi.chi_func()
func par_func():
par_var=0
chi.chi_var=0
Code in child:
extends Node2D
onready var par = get_node("..")
var chi_var
func _ready():
par.par_var=0
par.par_func()
func chi_func():
chi_var=0
par.par_var=0
(don’t ask me why!)
Only if the child calls the ‘par_func()’ the chi.chi_var=0 gives an error.
So: Parent and child can access each others variables; or their ‘functions to do so’.
The parent can call a function in child, to change the parameter of the parent,
but the child can not call a function of the parent to change a parameter of the child.
Or am I missing something?
It seems as if they are both ready.
edit: oh… and in my game it was the other way around: Parent can’t call child function to
get variables of parent.
Can you share the error code you get?
p7f | 2020-07-30 16:03
i think this just does not work from start because of the order of creation…
either the parent or the child is not _started yet when you get there
maybe try after a delay?
func _ready() -> void:
get_tree().create_timer(0.333).connect("timeout", self, "_after")
func _after() -> void:
print("test")
rakkarage | 2020-07-30 17:36
invalid set index ‘chi_var’(on base: 'nill) with value of type ‘int’
Off course this is wrong in all the wright places. But doesn’t the child have to exist,
to make that call in the first place?
All I can think of, is that a node can execute a function before it’s connected to the tree.
p.s. Delaying didn’t change a thing…
Black Monkey | 2020-07-31 00:31