581 字
3 分钟
--
godot基础:get_node

游戏场景中,还需要一些能够进行节点交互的协调工作,就需要用到get_node(),这一集内容,如果您写过前端开发,相信能够很快上手。

使用场景内的根节点的脚本组织场景内节点的工作#

  • 使用脚本为节点拓展功能是非常常见的操作,但是脚本过多会让文件变得混乱难以管理,应该尽可能减少一个场景内脚本文件的数目,因此一般只在根节点添加脚本。

举例:当小球触碰到球拍时,球拍发出声音。

  • 本质:在area2d节点的脚本命令声音节点工作。
  • 前提:需要在area2d脚本中获取声音节点对象。
  • 操作:声音节点对象调用播放音乐的函数。

get_node()函数的参数为一个字符串,是该节点的子节点的名称,也就是你要调用的那个节点。

节点信息:

Area2D
├── Sprite2D
├── CollisionShape2D
└── sound
var soundA = get_node("sound")
soundA.play()
#如此做后,就可以播放一次音效了。
#也可以:
get_node("sound").play()
#也有更加简洁的写法:
$<子节点的名称>.play()
#在这里为:
$sound.play()

get_child()#

get_child()也是一个获取子节点的函数,这个语法有些像css的兄弟选择器。括号中期望的参数是一个整数,为第几个节点,例如在上面的节点结构中:

get_child(2).play()

别忘了!计算机计数的时候是从0开始的。

get_parent()#

当你想要直接获取父节点的时候,可以使用get_parent()可以获取当前节点的父节点。

还记得..用来表示上一级吗?事实上你也可以使用get_node(”..”)来表示父节点

get_children()#

get_chi8ldren()可以获取所有直接子节点,俗称 孩子们(

假如有如下节点目录:

Area2D
├── Sprite2D
├── CollisionShape2D
└── sound
└── Node
print(get_children())
#打印结果为一个数组,且不包含Node节点

get_node()的优点和缺陷#

优点#

  • 可以直接获取到对象,再通过对象内部方法或对访问对象内部变量,操作简洁。

缺点#

  • 使用时必须直到子节点的名称
  • 使用get_node获取对象时,如果对象不存在或者函数方法不存在,程序会直接奔溃报错,测试不友好。
godot基础:get_node
https://vilstia.pages.dev/posts/游戏开发/godot/godot基础get_node/
作者
琴泠
发布于
2026-04-08
许可协议
CC BY-NC-SA 4.0