本文为Google Translate英译中结果,DrGraph在此基础上加了一些校正。英文原版页面:
Scripting languages — Godot Engine (stable) documentation in English
脚本语言¶
本课将概述 Godot 中可用的脚本语言。您将了解每个选项的优缺点。在下一部分中,您将使用 GDScript 编写您的第一个脚本。
脚本附加到节点并扩展其行为。这意味着脚本继承了它们附加到的节点的所有功能和属性。
例如,假设一个 Camera2D 节点跟随一艘船的游戏。默认情况下,Camera2D 节点跟随其父节点。想象一下,当玩家受到伤害时,您希望相机抖动。由于此功能未内置于 Godot 中,因此您可以将脚本附加到 Camera2D 节点并对摇动进行编码。
可用的脚本语言¶
Godot 提供四种游戏编程语言:GDScript、C#,以及通过其 GDExtension 技术的 C 和 C++。有更多社区支持的语言,但这些是官方语言。
您可以在一个项目中使用多种语言。例如,在一个团队中,您可以在 GDScript 中编写游戏逻辑,因为它编写起来很快,并使用 C# 或 C++ 来实现复杂的算法并最大限度地提高它们的性能。或者您可以用 GDScript 或 C# 编写所有内容。这是你的选择。
我们提供这种灵活性来满足不同游戏项目和开发人员的需求。
我应该使用哪种语言?¶
如果您是初学者,我们建议您从 GDScript 开始。我们专门为 Godot 和游戏开发人员的需求制作了这种语言。它具有轻量级和直接的语法,并提供与 Godot 的最紧密集成。
对于 C#,您将需要一个外部代码编辑器,如 VSCode或 Visual Studio。虽然 C# 支持现已成熟,但与 GDScript 相比,您会发现它的学习资源较少。这就是为什么我们主要向已经有过该语言经验的用户推荐 C# 的原因。
让我们看看每种语言的特性及其优缺点。
GDScript¶
GDScript是 为 Godot 构建的面向对象和 命令式编程语言。它由游戏开发人员制作并为游戏开发人员制作,以节省您编写游戏代码的时间。其特点包括:
-
导致短文件的简单语法。
-
极快的编译和加载时间。
-
紧密的编辑器集成,具有节点、信号的代码完成,以及来自它所附加的场景的更多信息。
-
内置矢量和变换类型,使其能够高效地大量使用线性代数,这是游戏所必需的。
-
像静态类型语言一样高效地支持多线程。
-
没有垃圾回收,因为此功能最终会在创建游戏时成为障碍。在大多数情况下,引擎默认为您计算引用并管理内存,但如果需要,您也可以控制内存。
-
渐进类型。默认情况下,变量具有动态类型,但您也可以使用类型提示进行强类型检查。
当您使用缩进构建代码块时,GDScript 看起来像 Python,但它在实践中的工作方式并不相同。它受到多种语言的启发,包括 Squirrel、Lua 和 Python。
注:为什么我们不直接使用 Python 或 Lua 呢?
多年前,Godot 使用 Python,然后是 Lua。两种语言的集成需要大量的工作并且有严重的局限性。例如,线程支持是 Python 面临的一大挑战。
开发一种专用语言不会给我们带来更多的工作,我们可以根据游戏开发者的需求对其进行定制。我们现在正致力于性能优化和第三方语言难以提供的功能。
.NET/C#¶
由于 Microsoft 的C#是游戏开发人员的最爱,我们正式支持它。C# 是一种成熟且灵活的语言,拥有大量为其编写的库。感谢微软的慷慨捐赠,我们可以增加对它的支持。
C# 在性能和易用性之间提供了很好的折衷,但您应该了解它的垃圾收集器。
注:您必须使用 Godot 编辑器的 .NET 版本在 C# 中编写脚本。您可以在 Godot 网站的下载页面上下载它。
由于 Godot 使用 .NET 6,理论上,您可以在 Godot 中使用任何第三方 .NET 库或框架,以及任何符合公共语言基础设施的编程语言,例如 F#、Boo 或 ClojureCLR。但是,C# 是唯一官方支持的 .NET 选项。
注:GDScript 代码本身的执行速度不如编译后的 C# 或 C++。但是,大多数脚本代码会调用引擎内用 C++ 代码中的快速算法编写的函数。在许多情况下,使用 GDScript、C# 或 C++ 编写游戏逻辑不会对性能产生重大影响。
基于GDExtension的C++¶
GDExtension 允许您使用 C++ 编写游戏代码,而无需重新编译 Godot。
由于我们使用了内部 C API Bridge,您可以使用任何版本的语言或混合编译器品牌和版本来生成共享库。
GDExtension 是性能的最佳选择。您不需要在整个游戏中都使用它,因为您可以用 GDScript 或 C# 编写其他部分。
使用 GDExtension 时,可用的类型、函数和属性与 Godot 的实际 C++ API 非常相似。
总结¶
脚本是包含附加到节点以扩展其功能的代码的文件。
Godot 支持四种官方脚本语言,为您提供性能和易用性之间的灵活性。
例如,您可以混合使用多种语言,以使用 C 或 C++ 实现要求苛刻的算法,并使用 GDScript 或 C# 编写大部分游戏逻辑。