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) |