Advertisement
asseater64

Untitled

Jun 14th, 2021
696
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement