从Unity转Godot:如何在脚本中按实例引用节点变量?
在Godot中实现类似Unity公共变量的实例自定义设置
从Unity转Godot的话,核心是搞懂Godot暴露变量到检视面板的正确方式,和Unity的public逻辑略有不同,具体做法如下:
不要用
onready做实例自定义绑定:onready var xxx = $NodePath是让脚本初始化时自动查找当前节点下固定路径的节点,所有实例都会共用这个路径的节点,没法单独修改,它是用来做脚本内部固定节点绑定的,不是给检视面板用的。用
@export注解暴露变量:Godot中默认变量是私有的,要让变量出现在检视面板并支持每个实例单独设置,必须给变量加上@export注解,类型声明可以让检视面板的交互更友好。
举个实际例子,要实现类似Unity中public Node3D变量的效果,GDScript代码应该这么写:
extends Node3D # 暴露到检视面板,每个实例可选择不同的Node3D节点 @export var target_node: Node3D # 暴露一个数值变量,支持每个实例单独修改初始值 @export var move_speed: float = 4.0 func _process(delta): if target_node: # 向目标节点移动 global_position = global_position.move_toward(target_node.global_position, move_speed * delta)
写完脚本挂载到节点上后,你就能在Godot的检视面板看到target_node和move_speed两个变量:
- 点击
target_node的选择按钮,就能为当前实例指定任意场景中的Node3D节点,每个实例可以选不同的目标 - 直接修改
move_speed的数值,每个实例的移动速度也会独立生效
这个逻辑和Unity里设置public变量、每个实例单独修改的用法完全一致,只是Godot用@export替代了Unity的public关键字来标记需要暴露到检视面板的变量。
内容的提问来源于stack exchange,提问作者Feref28
相关产品推荐
相关产品推荐

