You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 22:48:16