我目前正在使用 Godot 4.0.2 开发一个项目,但在我的脚本中使用 export 关键字时遇到了问题。每次我尝试使用它时,都会收到“类主体中出现意外的‘标识符’”错误。我不确定是什么原因导致此错误或如何解决它。
这是我尝试使用的代码示例:
扩展 Node2D
export var growth_time = 10.0 var is_grown = 假
我试过在网上搜索解决方案,但没有找到任何有用的东西。谁能解释导致此错误的原因以及如何解决?此外,我能做些什么来防止将来发生此错误?
这是一个叫做
growth_time
的变体变量,它的类型是Variant:
# Godot 3.x or Godot 4.x
var growth_time
这里变量仍然是一个Variant,但是它被初始化为一个
float
值:
# Godot 3.x or Godot 4.x
var growth_time = 10.0
要导出变量(以便它在检查器中可用),在 Godot 3.x 中你这样做了:
# Godot 3.x
export (float) var growth_time
由于变量是Variant类型,不指定类型是无法导出的。这里变量被导出为
float
.
但是,变量仍然是一个Variant。如果您从代码中设置它们,它可能具有非 int 值。但它会在检查器中显示为一个整数。
我们需要解决这个问题。因为在 Godot 4.x 中,你不会那样做。事实上,我们可以在 Godot 3.x 中修复它,它看起来像这样:
# Godot 3.x
export var growth_time:float = 10.0
或者因为你正在初始化它,我们可以隐式设置类型:
# Godot 3.x
export var growth_time := 10.0
现在变量是一个
float
(明确定义或从您用来初始化它的值推断),所以我们不需要告诉它把它导出为一个float
,因为导出一个'float'因为 float
是默认值(好吧,导出 float
的其他选项也是 float
但您可以指定范围或使用指数比例)。
是的,Godot 3.x 有类型变量。这不是类型提示。
现在,这就是 Godot 4.x 中的样子:
# Godot 4.x
@export var growth_time:float = 10.0
或者像这样:
# Godot 4.x
@export var growth_time := 10.0
那是因为
export
不再是关键字,而是注解。注释是 GDScript 2.0(Godot 4.x 附带的)中的一项新语言功能,它们都以 @
. 开头
这个答案改编自我在 gamedev (link) 的另一个答案。