Menu
CoddyTech

Сигналы со значениями

Часть раздела Сигналы и столкновения путешествия по 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, а не вводи число вручную.

challenge icon

Задание

Легко

Пусть каждый самоцвет сообщает main.gd, сколько очков он приносит.

  1. Объяви signal collected(points) в начале gem.gd.
  2. В конце _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

Все уроки раздела Сигналы и столкновения

Потренируйтесь самостоятельно: Песочница Godot