Управление событиями кнопок и динамическое назначение. Button Connect Event

Назад в "Основы GDScript"

Предположим, что в нашем меню есть какое-то количество разных элементов и контрол с кнопками. Выглядит это примерно так:


Все эти кнопки должны иметь свои события и обработчики для них, соответственно, должны быть описаны в коде.

Можно пойти сложным путём и навесить на каждую кнопку скрипт и в нем уже обработать соответствующие события, однако, в дальнейшем, можно просто запутаться в них, или вообще отредактировать скрипт не той кнопки.

Решение, которое я предлагаю, очень просто и заключается в том, что функции-обработчики можно описать в ноде-родителе всех этих кнопок. Выглядеть это будет так:


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

Теперь, эти обработчики нужно просто присоединить к кнопкам методом connect, поместив это в функцию _ready:


Как видите, всё очень просто и наглядно. Схема функции connect простая: передается название события, затем ссылка на узел, из которого нужно взять функции, и затем название функции. Сама функция может находиться где угодно.


На этом всё. Спасибо за внимание =)

Автор: SkanerSoft | Дата добавления: 15.07.2018 13:55 | Урок прочитан: 31 раз