随着节点数的增加,一个有用的管理方式是把节点添加到组里。
有两种方法可以做到这一点。第一个通过UI实现,在Node面板下的Groups按钮:
And the second way is from code. One example would be to tag nodes which are enemies:
(另一种是使用脚本进行添加)
func _ready():
add_to_group("enemies")
这样一来, 如果玩家在潜入一个秘密基地时被发现时, 可以通过使用 SceneTree.call_group() 发出的警报声来通知到所有的敌人:
func _on_discovered(): # This is a purely illustrative function.(纯解释性功能)
get_tree().call_group("enemies", "player_was_discovered")
上面的代码会使在群组 enemies
里的每个成员都会调用函数 player_was_discovered
。
通过调用 SceneTree.get_nodes_in_group() 也可以获得 enemies
节点的完整列表:
var enemies = get_tree().get_nodes_in_group("enemies")
类 SceneTree 提供了很多有用的方法,例如与场景、场景中节点的层次、节点分组交互。它让你可以很方便切换场景,重载场景,退出游戏,暂停和继续游戏。它还有一些有趣的信号,如果你有空可以详细去查看!