您当前的位置: 首页 > 

开发游戏的老王

暂无认证

  • 1浏览

    0关注

    803博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Godot中的组(Group)

开发游戏的老王 发布时间:2019-10-21 16:59:17 ,浏览量:1

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可以加入若干个组
关注
打赏
1656935939
查看更多评论
立即登录/注册

微信扫码登录

0.0405s