Menu
CoddyTech
flag Ru iconРусскийdown icon

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

Часть раздела Сигналы и столкновения путешествия по 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
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

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

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