View difference between Paste ID: BwPKvAKu and gjfLrUpV
SHOW: | | - or go back to the newest paste.
1
####################################################
2
# Некая сцена-ассет, в которой есть дочерняя нода Line2D, 
3
# в инспекторе объектов годота она стоит первой в списке, значит её индекс = 0
4
5
onready var line_2d : Line2D = get_child(0)
6
7
# Если сделать так
8
onready var line_2d_str1 : Line2D = get_node("SomeLine2D")
9
# или так
10
onready var line_2d_str2 : Line2D = $SomeLine2D
11
# то всё равно будет опрос дерева строкой, такшта воть.
12
13
# Это лютая и неочевидная поебень, когда расставляешь переменным-ссылкам индексы из массива
14
# Этим следует заниматься на этапе оптимизации, когда игра уже есть.
15
16
func get_line_2d():
17
	# Если в методе-сеттере есть только эта строка, то он не очень-то и нужен
18
	return line_2d
19
20
####################################################
21
# А в некой сцене-пользователе вышенаписанного ассета мы можем уже обращаться и к переменной напрямую
22
# и к методу-сеттеру, если нам нужно дополнительные действия через сеттер совершать
23
24
func _init():
25
	# Вызвав функцию отсюда, мы гарантированно обратимся к line_2d, когда она пустая
26
	test_line_access()
27
28
func test_line_access():
29
	# Чтобы не получить ошибку, если дёрнешь переменную/метод
30
	# мы можем так же заюзать yield чтобы дождаться ready
31
	# от целевого объекта, если дёргаем функцию извне
32
	# и не знаем, всё ли там готово и загружено
33
	if !some_asset.line_2d:
34
		yield(some_asset, "ready")
35
	print("имя ноды: ", some_asset.get_line_2d().name)