【Godot】自动注入节点的属性工具类

Godot4.0引入了一个工具类InjectUtil,它允许自动为节点属性设置唯一的名称,无需手动使用@onready获取。该工具通过检查GDScript的属性列表,找到未赋值的对象类型属性,并根据指定前缀自动从场景中注入相应的节点。这简化了代码,提高了开发效率。
摘要由CSDN通过智能技术生成

Godot 4.0 stable

自动设置唯一名称的属性节点属性,不需要再手动 @onready 进行一个个获取了

## 注入节点工具
class_name InjectUtil


## 自动注入 unique (唯一名称)节点属性
##[br]
##[br][code]parent[/code]  目标节点,对这个节点的属性进行自动注入节点属性
##[br][code]prefix[/code]  注入的属性的前缀值
##[br]示例:
##[codeblock]
##extends Node
##
##var __init_node__ = InjectUtil.auto_inject(self, "_")
### 当前场景中有 %sprite 、%collision 节点则会自动获取并自动设置下面两个属性
##var _sprite : Sprite2D
##var _collision: Collision
##
##[/codeblock]
static func auto_inject(parent: Node, prefix: String = ""):
	var method : Callable = func():
		for data in (parent.get_script() as GDScript).get_script_property_list():
			if data['type'] == TYPE_OBJECT and parent[data['name']] == null:
				var prop = str(data['name']).trim_prefix(prefix)
				if parent.has_node("%" + prop):
					# 注入属性
					var node = parent.get_node_or_null("%" + prop)
					if node:
						parent[data['name']] = node
	
	if parent.is_inside_tree():
		method.call()
	else:
		parent.tree_entered.connect(method, Object.CONNECT_ONE_SHOT)
	return true

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值