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ố.
Thử thách
DễĐể mỗi viên ngọc cho main.gd biết nó có giá trị bao nhiêu điểm.
- Khai báo
signal collected(points)ở đầugem.gd. - Ở cuối
_on_body_entered, gửi tín hiệu đó cùng vớipointscủ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
2Tín hiệu
Các vùng chạm nhauTín hiệu của riêng bạnTín hiệu kèm giá trịTín hiệu từ nút khácLắng nghe tín hiệu của bạnTự luyện tập: Playground Godot