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