[Godot] [转载] onready 关键字

文章介绍了GodotEngine的GDScript语言中onready关键字的使用,它允许开发者延迟变量初始化直到_node_._ready()方法调用,确保对场景树中节点的引用正确。当尝试在脚本中引用子节点时,如果不使用onready,可能在节点未准备好时就会引发错误。示例展示了如何通过onready避免ParserError,并解释了如果节点不存在,变量将被赋值为null。
摘要由CSDN通过智能技术生成

本来写一写 onready 的例子,结果看了下官方文档,额,言简意赅,我还是 copy 过来吧

https://docs.godotengine.org/zh_CN/latest/tutorials/scripting/gdscript/gdscript_basics.html

使用节点时, 通常希望将对场景部分的引用保留在变量中. 由于仅在进入 active 场景树时才保证要配置场景, 因此只有在调用 Node._ready() 时才能获得子节点.

var my_label

func _ready():
    my_label = get_node("MyLabel")

这可能会有些麻烦,尤其是当节点和外部引用堆积时。为此,GDScript 具有关键字 onready,将成员变量的初始化推迟到调用 _ready()。它可以用一行替换上面的代码:

onready var my_label = get_node("MyLabel")

那我举个例子吧:

在 Node2D 节点下挂一个 Icon 节点,我想创建一个全局变量 a 来引用 Icon 节点
在这里插入图片描述
但是一运行就报错:

Parser Error: Use "onready var a = get_node(...)" instead.

还挺贴心,直接告诉你用 onready ,如果不想用 onready 则将 var a: Sprite = $Icon 移动到 _ready 中即可

func _ready():
	var a : Sprite = $Icon

但是这样 a 就是局部变量了,所以要像官方 demo 里在外部先申明:

var a : Sprite

func _ready():
	a = $Icon

值得一提的是,如果不存在 Icon 这个节点,则 a == null

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值