Сигналы со значениями
Часть раздела Сигналы и столкновения путешествия по Godot на Coddy. Урок 8 из 27.
Сигнал может передавать значения, как body_entered передаёт тело. Перечисли их в скобках при объявлении сигнала:
signal collected(points)Передай значения в emit() в том же порядке:
collected.emit(points)Каждая функция, подключённая к collected, получает это значение. Здесь скрипт на Main добавляет очки к счёту и выводит его:
func _on_gem_collected(points):
score += points
print("Score: ", score)Оба самоцвета запускают один и тот же скрипт. Значение points у маленького самоцвета равно 10, а у большого — 25; оно задано для каждого узла в инспекторе. Поэтому передавай points, а не введённое вручную число.
Задание
ЛегкоПусть каждый самоцвет сообщает main.gd, сколько очков он стоит:
- Объяви
signal collected(points)в началеgem.gd. - В конце
_on_body_enteredотправь сигнал, указавpointsсамоцвета.
Пройди по обоим самоцветам. В консоли должно появиться Score: 10, затем Score: 35.
Попробуйте сами
extends Area2D
@export var points = 10
func _ready():
body_entered.connect(_on_body_entered)
func _on_body_entered(body):
if not visible:
return
visible = false
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Сигналы и столкновения
2Сигналы
Области взаимодействуютСвой сигналСигналы со значениямиСигнал другого узлаСлушаем свой сигналПотренируйтесь самостоятельно: Песочница Godot