Menu
CoddyTech

Tín hiệu kèm giá trị

Thuộc phần Tín hiệu và va chạm trong hành trình Godot của Coddy. Bài học 8 trên 27.

Tín hiệu có thể mang theo giá trị, giống như body_entered mang theo đối tượng. Liệt kê các giá trị trong dấu ngoặc khi bạn khai báo tín hiệu:

signal collected(points)

Truyền các giá trị cho emit() theo đúng thứ tự:

collected.emit(points)

Mỗi hàm được kết nối với collected đều nhận giá trị đó. Ở đây, script trên Main cộng điểm vào điểm số rồi in ra điểm số:

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

Cả hai viên ngọc đều chạy cùng một script. Giá trị points của viên ngọc nhỏ là 10, còn của viên ngọc lớn là 25, được đặt trên từng nút trong cảnh. Vì vậy, hãy truyền points, đừng nhập một con số.

challenge icon

Thử thách

Dễ

Để mỗi viên ngọc cho main.gd biết nó có giá trị bao nhiêu điểm.

  1. Khai báo signal collected(points) ở đầu gem.gd.
  2. Ở cuối _on_body_entered, gửi tín hiệu đó cùng với points của viên ngọc.

Nhấn Chơi rồi đi qua cả hai viên ngọc: Bảng điều khiển hiển thị Score: 10, rồi đến Score: 35. Sau đó nhấn Kiểm tra.

Tự làm thử

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

Tất cả bài học trong Tín hiệu và va chạm

Tự luyện tập: Playground Godot