Menu
CoddyTech

收集硬币:剩余硬币

本课属于 Coddy Godot 学习旅程的“信号与碰撞”单元。第 26 课,共 27 课。

Main 应该知道还剩多少枚金币。在 main.gd 顶部用一个变量保存数量。在开始时统计一次金币组,然后每收集一枚金币就减一:

var coins_left = 0

func _ready():
	coins_left = get_tree().get_nodes_in_group("coins").size()

为什么不在 _on_coin_collected 中统计金币组?金币会在释放自身之前发送 collected。它会一直留在组中,直到当前帧结束,所以统计结果会包含这枚金币。

只有在你修改变量时,变量才会改变。

challenge icon

挑战

中等

让 Main 统计剩余的硬币。

  1. 在 main.gd 的顶部添加 var coins_left = 0,并在 _ready() 中将它设为 coins 组的大小。
  2. 在 _on_coin_collected() 中将数量减 1,并用它替换 Got a coin!,输出:print("Coins left: ", coins_left)。

按下 开始 并拾取一枚硬币:控制台会显示 Coins left: 5。然后点击 检查。

亲手试试

extends Node2D

func _ready():
	for coin in get_tree().get_nodes_in_group("coins"):
		coin.collected.connect(_on_coin_collected)

func _on_coin_collected():
	print("Got a coin!")

信号与碰撞中的所有课

自己练习: Godot 在线编辑器