Я очень функциональный парень, я имею в виду функциональное программирование. По большей части я работал с функциональными языками программирования, в результате я забыл большинство своих основ ООП, они все еще там, они просто не в моей голове. Сегодня я хотел бы поговорить о сигналах, они являются огромной частью Godot и поэтому чрезвычайно полезны для правильного выполнения чего-либо.

Согласно документации, сигналы - это реализация Годо шаблона наблюдателя. Что такое паттерн наблюдателя? Я не знаю, давай выясним. Согласно Википедии, шаблон наблюдателя - это шаблон разработки программного обеспечения, в котором объект, известный как субъект, имеет список зависимых, которые называются наблюдателями. Наблюдатели будут автоматически уведомляться о любых изменениях состояния объекта, как правило, путем вызова одного из своих методов.

Это сводится к тому, что узел X может прослушивать узел Y и получать обновления этого узла. Например, если у вас была кнопка, вместо постоянной проверки того, была ли она нажата, при нажатии кнопка издает «сигнал».

Основной вариант использования сигналов - разделение игровых объектов. Это более простой способ организовать ваш код, он создает более легкую структуру управления и, прежде всего, значительно упрощает тестирование вашего кода. Это достигается тем, что вместо других объектов, ожидающих присутствия другого объекта, они могут вместо этого послать сигнал другим подписчикам, чтобы они тоже ответили.

давайте взглянем на несколько примеров. Я взял руководство по сигналам из документации Godot, которое можно найти здесь: https://docs.godotengine.org/en/3.1/getting_started/step_by_step/signals.html

Создайте сцену с одним таймером и одним спрайтом, как описано выше. Убедитесь, что вы создали сценарий на Sprite, это пригодится позже.

Щелкните таймер и перейдите в раздел «Узел» справа. Здесь вы увидите все сигналы для узла, как вы можете видеть вверху, это функция тайм-аута. Дважды щелкните по нему, и вы сможете подключить этот сигнал к другому узлу.

Щелкните узел Sprite и нажмите "Подключиться".

Godot автоматически создаст функцию под названием «_on_Timer_timeout ()» и добавит код, который вы видите там, это переключит видимость узла Sprite. $ ”.” означает, что вы обращаетесь к этому узлу.

Убедитесь, что вы видите это внутри узла таймера, иначе соединение не будет работать.

Просто спрайт теперь включается и выключается каждую секунду, что является значением по умолчанию для таймера. Когда таймер достигает нуля, видимость переключается.

Godot предоставляет множество встроенных сигналов, но вы также можете определить свои собственные, когда вам нужно. Когда вам нужно сказать другому объекту что-то, посмотрите на него с помощью сигнала, потому что это значительно облегчит вашу жизнь. Сигналы дают вам возможность сообщить другому объекту, что что-то изменилось, без прямого соединения обоих объектов. Сигналы довольно просты, если увидеть их в действии.

Спасибо за чтение, я надеюсь, что это помогло вам понять сигналы в Годо.