[Godot] GDScript 中的 $ 符号什么意思

随便给段脚本看看

extends Node2D

func _ready():
	
	# 新建一个 Sprite 节点
	var sprite = Sprite.new()

	# 设置纹理图片
	var icon = preload("res://icon.png")

	# 添加到当前场景中
	add_child(sprite)


func _process(delta):
	var sprite = $mynode
	sprite.rotate(0.1)

由于 Godot 场景树中同一层级节点都不准重名,所以给定义节点名字,这可以快速定位到节点是谁,所以Godot 中用 $+节点名字 这个语法糖来快速定位节点,这样就能通过脚本来快速操作节点了

用 $ 获取节点

除了刚刚的语法糖,$ 还有其他用法:

比如获取当前节点对象

var curr1 = $"."
var curr2 = self

但是不可以去掉引号,否则会报错:

Parser Error: Path expected after $.

也可以按照在 $ 后添加路径字符串,绝对路径相对路径都可以

var x = $"Sword"
var y = $"Backpack/Dagger"
var z = $"../Swamp/Alligator"
var b = $"/root/MyGame"

以上路径摘自 Godot 官方文档

一般来说,只要 $ 后面路径字符串的第一个字符不是 ./ 一般都可以把路径字符串的引号去掉,所以以上路径可以替换为:

var x = $Sword
var y = $Backpack/Dagger
var z = $"../Swamp/Alligator" # 不可以替换
var b = $"/root/MyGame"       # 不可以替换

函数方法

可以使用 get_parent, get_node 和 get_tree 来分别获取父节点,指定节点和当前场景树来任意获取节点

比如获取父节点:

var par1 = $".."
var par2 = get_parent()

当前路径的子节点:

var chi1 = $son
var chi2 = $"son"
var chi3 = get_node("son")

一些关于内存管理的记录

Godot 中有两种资源,一种是继承自 Reference 类,另一种是继承自其他 Node 的,前者通过引用计数算法释放,或者通过 unreference 手动释放,后者需要 free 或者 deque_free 释放

Godot GDScript 没有垃圾回收机制,可能存在一定的内存泄露问题,但是由于其没有 C++ 指针,所以风险较 C++ 而言来说较小

不过即使存在内存忘记释放的问题,也可通过 Godot 编译器中的 监视器和性能分析器来快速排查,因为 GDScript 是脚本语言,所以单步调试方便

GDScript 中继承自 Reference 类的类(对象) 都通过引用计数算法来进行对象的释放

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值