Комментарии 3
Подобные способы взятия узлов ($AnimatedSprite, $Timer и прочие $...) стоит кэшировать, например:
onready var this_sprite = $AnimatedSprite
onready var for_timer = $Timer
чтобы обращаться к ним так:
this_sprite.play(«show») вместо $AnimatedSprite.play(«show»)
Становится менее наглядно, но следует помнить, что каждый такой $… аналогичен вызову get_node() и при использовании в цикле потери времени на это могут стать заметными. Попутно от подобного кэширования дополнительная польза на будущее, если целевой узел вдруг сместится в иерархии, то не надо будет править пути к нему по всему коду.
А так, вне циклов, обращения через $… более оправданы, в том плане, что так проще/нагляднее и потери могут быть почти неощутимы.
onready var this_sprite = $AnimatedSprite
onready var for_timer = $Timer
чтобы обращаться к ним так:
this_sprite.play(«show») вместо $AnimatedSprite.play(«show»)
Становится менее наглядно, но следует помнить, что каждый такой $… аналогичен вызову get_node() и при использовании в цикле потери времени на это могут стать заметными. Попутно от подобного кэширования дополнительная польза на будущее, если целевой узел вдруг сместится в иерархии, то не надо будет править пути к нему по всему коду.
А так, вне циклов, обращения через $… более оправданы, в том плане, что так проще/нагляднее и потери могут быть почти неощутимы.
+2
Спасибо о рекомендации кэшировать взятия узлов, если они будут использованы в циклах. Я о таком не знал, так что очень благодарен за данный совет.
+1
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Механики ловушек и интерактивных объектов в Godot Engine. Часть 2