GDScript详细简介

本文概述

  • 历史
  • 语言
  • 身份标识
GDScript是一种动态类型化的高级编程语言。它用于创建内容。它经过优化并与Godot Engine紧密集成, 为内容创建和集成提供了极大的灵活性。
历史【GDScript详细简介】在我们早期, 引擎使用Lua脚本语言。 Lua速度很快, 但是创建到任何面向对象系统的绑定(通过使用回退)既复杂又缓慢, 并且花费了大量代码。经过使用Python的一些实验后, 它也难以嵌入。
运用于游戏的最后一种第三方脚本语言是松鼠, 但已被删除。显然, 自定义脚本语言可以更好地利用Godot的特定体系结构:
  • Godot将脚本嵌入节点中。
  • Godot对2D和3D脚本语言使用了许多内置数据类型, 但它们没有提供这种功能, 因此绑定效率很低。
  • Godot使用线程从网络或磁盘中提取和初始化数据。通用语言的脚本解释器对此并不友好。
  • Godot已经有了用于资源的内存管理模型。大多数脚本语言提供了自己的脚本语言, 这导致重复的工作量和错误。
  • 绑定代码杂乱无章, 会导致故障点, 意外错误以及通常较低的可维护性。
考虑的结果是GDScript。在相同的功能下, GDScript的语言和解释器最终比Lua和松鼠的绑定代码小。
例子
有人可以看一下语法, 因此这是GDScript外观的简单示例。
# A file is a type of class! # Inheritanceextends BaseClass# Member Variablesvar a = 5var s = "Hello"var arr = [1, 2, 3]var dict = {"key": "value", 2:3}# Constantsconst ANSWER = 42const THE_NAME = "Charly"# Enumsenum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY}enum Named {THING_1, THING_2, ANOTHER_THING = -1}# Built-in Vector Typesvar v2 = Vector2(1, 2)var v3 = Vector3(1, 2, 3)# Functionfunc some_function(param1, param2):var local_var = 6if param1 < local_var:print(param1)elif param2 > 6:print(param2)else:print("Fail!")for i in range(20):print(i)while param2 != 0:param2 -= 1var local_var2 = param1 + 3return local_var2# Functions override functions with the same name on the base/parent class.# If you still want to call them, use '.' (like 'super' in other languages).func something(p1, p2):.something(p1, p2)# Inner Classclass Something:var a = 10# Constructorfunc _init():print("Constructed!")var lv = Something.new()print(lv.a)

如果我们以前有使用C, C ++或C#之类的静态类型语言的经验, 但以前从未使用过动态类型的语言, 建议你阅读本教程:
语言在下文中, 将概述GDScript。应该在链接的类描述中查找详细信息, 例如哪些方法可用于数组或其他对象。
身份标识将自身限制为字母字符(a到z和A到Z), 数字(0到9)和_的标识符称为标识符。此外, 标识符可能不能以数字开头。标识符始终区分大小写(foo与FOO不同)。

    推荐阅读