Как связать сигнал с функцией в Godot 3.1

Лирическое отступление

Делая обучающий проект по плейлисту от Angega Studios, я столкнулся с одним неприятным моментом: повторяя все действия, как обезьянка, я не мог достичь того результата в Godot, который был на видео.

В частности, меня смущало, что автор использует предварительную загрузку файла с собственными скриптами-заготовками, которые вызывал через запись:

utils.название_функции

К тому же, попытка подключить файл utils.gd не увенчался успехом: Godot 3.1 выдавал ошибки, а у меня не было желания разбираться с тем, что я не буду использовать в ближайшее время.


Проблема и решение

Работая с уроком №13 я обратил внимание на то, что изначально мы создали сигнал в ship.gd, а после начали прикреплять его к скрипту спрайта с полоской жизни (момент на 1:50).

Так как я не использую utils.gd в своей работе, я пытался разобрать составляющие скрипта attach() и вставить эту функцию в сам скрипт спрайта. Не помогло, но погуглив, я нашёл решение.

Связать сигнал с функцией можно простым способом:
(все названия идентичны обучающему плейлисту)

1. Для начала создайте сигнал в том скрипте, откуда надо передавать сигнал. В нашем случае это сигнал armor_changed в файле ship.gd

2. Откройте stage_game.tscn, во вкладке Scene кликните на ноду ship, перейдите во вкладку Node и найдите исходящий сигнал:

3. Нажмите правой кнопкой мыши по исходящему сигналу armor_changed() и нажмите «Connect…»

4. Выбираем ноду, к которому обращаемся при создании сигнала (1), указываем названием метода, который будет связывать сигнал и ноду (2), включаем «Make Function» (3), если нужно создать функцию с таким методом.

Если функция у вас уже создана, то переключатель можно перевести в положение OFF, но не забудьте указать корректное название своего метода в ноде.

Жмём на кнопку «Connect», переходим в скрипт ноды, к которой прикрепили сигнал и пишем код, который будет выполняться при поступлении сигнала:

Напомню, что в нашем примере из видеоурока необходимо изменить значение Frame в разделе Animation на то значение, которому равна переменная armor.

Протестировано и работает в Godot 3.1.

Как связать сигнал с функцией в Godot 3.1: 2 652 комментария

  1. Segui Le Estrazioni Del Lotto Per Verificare La Tua Giocata
    Il gioco del Lotto si basa sull’utilizzo dei numeri da 1 a 90: consiste nel pronosticare l’uscita di un numero (estratto), di un numero specificando la relativa successione ordinale di primo, secondo, terzo, quarto quinto estratto (estratto determinato), di due numeri (ambo), di tre numeri (terno), di quattro numeri (quaterna) di cinque numeri (cinquina) su una singola ruota su tutte e dieci le ruote sulla ruota nazionale. Su in diretta dalle 20 le estrazioni di Lotto, Superenalotto e 10eLotto di martedГ¬ 28 maggio 2019: con i numeri vincenti e le quote. La sestina vincente del Superenalotto di oggi:В 8 30 33 58 84 89 Jolly 88 Superstar 53. Nell’ultima estrazione non si ГЁ registrato nessun 6 nГ© 5+. Il Jackpot ГЁ arrivato cosГ¬ alla straordinaria cifra diВ 160.500.000 euro.
    Estrazioni Lotto e SuperEnalotto di martedГ¬ 29 gennaio, numeri vincenti: tutte le ruote. Inoltre ГЁ anche possibile indicare i propri numeri e vederli apparire nel quadro estrazionale del Gioco del Lotto escludendo tutti gli altri. PianetaLotto per la navigazione nel sito richiede che i Cookies siano attivati, che l’accettazione della legge Europea sui Cookie sia avvenuta, e che Javascript sia abilitato.
    In attesa dell’estrazione di oggi, martedГ¬ 21 maggio 2019, riportiamo a seguire tutti i numeri dei concorsi di sabato 18 maggio Ecco di seguito i numeri estratti per Lotto, Superenalotto e 10eLotto. Tutte le 288 estrazioni della giornata del 10elotto in diretta e a portata di click. Visualizza le estrazione delle piГ№ diffuse lotterie Italiane: Lotto, 10 e Lotto, Win for Life, Superenalotto (anche «Si vince Tutto»), EuroJackpot e Vinci Casa.
    Il SuperEnalotto ГЁ la lotteria piГ№ popolare in Italia, con jackpot che sono costantemente tra i piГ№ alti in Europa. Ogni martedГ¬, giovedГ¬ e sabato vengono estratti i 6 numeri vincenti piГ№ un numero Jolly e un numero Superstar. Spazio anche ai numeri del Lotto dell’ estrazione di stasera : qui sotto i numeri estratti su tutte le ruote del Lotto nella serata di sabato 6 luglio.
    Lotto, SuperEnalotto e 10eLotto:В l’estrazioneВ di oggi sabato 6В luglioВ ГЁ in diretta dalle ore 20:00 su Su questa pagina tutti i numeri estratti sulle ruote del Lotto e la combinazione vincente del SuperEnalotto. Pubblicheremo anche le quote dei vincitori. Il jackpot in palio nell’estrazione di stasera ГЁ di 182,7 milioni di euro, il piГ№ alto nellaВ storia del gioco Sisal.
    estrazioni del lotto di oggi

  2. Its like you read my mind! You appear to know a lot about this, like you wrote the book
    in it or something. I think that you can do with a few pics to drive the message home
    a little bit, but instead of that, this is magnificent blog.
    A great read. I’ll certainly be back.

  3. Hi, I do think this is a great web site. I stumbledupon it 😉 I am going to
    come back yet again since I bookmarked it.
    Money and freedom is the greatest way to change, may you be rich and continue to guide other
    people.