在 Godot 4.0.2 中使用导出时,类主体中出现意外的“标识符”错误

hea*_*999 4 game-development game-engine godot

我目前正在 Godot 4.0.2 中开发一个项目,但在脚本中使用 export 关键字时遇到问题。每次我尝试使用它时,都会收到“类主体中出现意外的‘标识符’”错误。我不确定是什么原因导致此错误或如何修复它。

这是我尝试使用的代码示例:

扩展 Node2D

导出 var Growth_time = 10.0 var is_grown = false

我尝试过在线搜索解决方案,但没有找到任何有帮助的内容。谁能解释导致此错误的原因以及如何修复它?此外,我可以采取什么措施来防止将来再次发生此错误?

单击此处查看图像

The*_*aot 5

这是一个名为 的变量growth_time,它的类型是 Variant:

\n
# Godot 3.x or Godot 4.x\nvar growth_time\n
Run Code Online (Sandbox Code Playgroud)\n

这里的变量仍然是一个 Variant,但它是用一个float值初始化的:

\n
# Godot 3.x or Godot 4.x\nvar growth_time = 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

要导出变量(以便在检查器中可用),在 Godot 3.x 中,您执行了以下操作:

\n
# Godot 3.x\nexport (float) var growth_time\n
Run Code Online (Sandbox Code Playgroud)\n

由于该变量的类型为 Variant,因此如果不指定类型则无法导出它。这里变量被导出为float.

\n

然而,该变量仍然是一个 Variant。float如果您从代码中设置它们,则它可能具有不存在的值。float但它会在检查器中显示为。

\n

我们需要解决这个问题。因为在 Godot 4.x 中,你不需要这样做。事实上,我们可以在 Godot 3.x 中解决这个问题,它看起来像这样:

\n
# Godot 3.x\nexport var growth_time:float = 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

或者,由于您正在初始化它,我们可以隐式设置类型:

\n
# Godot 3.x\nexport var growth_time := 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

现在变量是 a float(显式定义或从用于初始化它的值推断),因此我们不需要写入floatexport因为将 \xc2\xb4float\xc2\xb4 导出为 afloat是默认值(好吧,导出 a 的其他选项float也是float,但您可以指定范围或使用指数比例)。

\n

是的,Godot 3.x 有类型变量。它不是类型提示。

\n

现在,Godot 4.x 中的情况如下:

\n
# Godot 4.x\n@export var growth_time:float = 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

或者像这样:

\n
# Godot 4.x\n@export var growth_time := 10.0\n
Run Code Online (Sandbox Code Playgroud)\n

这是因为export不再是关键字,而是注释。注释是 GDScript 2.0(Godot 4.x 附带的)中的一项新语言功能,它们都以@.

\n

这个答案改编自我在 gamedev 的另一个答案(链接)。

\n