Godot中的组(Group)

本文深入探讨Godot引擎中的组(Group)概念,对比Unity的Tag,介绍如何在编辑器和运行时创建及使用组,实现节点管理和观察者模式,通过具体示例展示其在游戏开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Godot Engine 3.2 Alpha2

Godot的组(Group)类似于Unity等引擎中的tag,但是在Godot中一个节点(Node)可以加入多个组。在Godot中用组管理和组织场景中的节点是非常方便有效的。

组的创建和加入

在Godot中创建组以及节点加入组中有两种方式:编辑器方式或者运行时方式

  • 编辑器方式

在这里插入图片描述
可以在Group Editor中查看分组情况

在这里插入图片描述

  • 运行时方式

每一个Node的子类对象都有add_to_group方法,可以调用它就可以加入某个组

func _ready():
    add_to_group("group_1")

如果要从退出组,则用

remove_from_group("group_1")
组的用途
  • 获取组对象
get_tree().get_nodes_in_group("group_name")
  • 实现观察者模式

使用组可以非常方便地实现观察者模式,只要让接收某类消息的节点都加入某一个组中即可,然后调用SceneTreecall_group方法就可以分发消息了。

get_tree().call_group("group_name","method_name")

注意:

  1. call_group方法的原型是,其第二个参数后面是动态参数
Variant call_group(group: String, method: String, ...) vararg
  1. 如果组中某个对象并不包含"method_name"这个方法,也并不会报错,应该是call_group在遍历组成员时先调用了has_method("method_name")

应用场景举例

假设场景中所有的小怪都加入了"monster"组,你的主角释放了一个大招,要让所有的小怪都收到1点伤害,那么可以这样

get_tree().call_group("monster","hurt",1)

小结
Godot的组和Unity的Tag区别

  1. 无需预定义,可以动态创建
  2. 一个Node可以加入若干个组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开发游戏的老王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值