Menu
CoddyTech

Signals With Values

Part of the Signals and Collisions section of Coddy's Godot journey. Lesson 8 of 27.

A signal can carry values, the way body_entered carries the body. List them in brackets when you declare it:

signal collected(points)

Give the values to emit(), in the same order:

collected.emit(points)

Every function connected to collected gets the value. Here the script on Main adds the points to the score and prints it:

func _on_gem_collected(points):
	score += points
	print("Score: ", score)

Both gems run the same script. The small gem's points is 10 and the big gem's is 25, set on each node in the Inspector. So send points, not a number you type in.

challenge icon

Challenge

Easy

Make each gem tell main.gd how many points it is worth:

  1. Declare signal collected(points) at the top of gem.gd.
  2. At the end of _on_body_entered, send it with the gem's points.

Walk over both gems. The Console should show Score: 10, then Score: 35.

Try it yourself

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 iconTest yourself

This lesson includes a short quiz. Start the lesson to answer it and track your progress.

All lessons in Signals and Collisions

Practice on your own: Godot playground