📜  GDscript简介

📅  最后修改于: 2021-01-02 09:57:41             🧑  作者: Mango

GDScript简介

GDScript是一种动态类型化的高级编程语言。它用于创建内容。它经过优化与Godot Engine紧密集成,为内容创建集成提供了极大的灵活性。

历史

在我们早期,引擎使用Lua脚本语言。 Lua很快,但是创建到任何面向对象系统的绑定(通过使用fallbacks )既复杂又缓慢,并且花费了大量代码。经过使用Python的一些实验后,它也难以嵌入。

运用于游戏的最后一种第三方脚本语言是松鼠,但已被删除。显然,自定义脚本语言可以更好地利用Godot的特定体系结构:

  • Godot将脚本嵌入节点中。
  • Godot对2D3D脚本语言使用了许多内置数据类型,但脚本语言却不提供这种功能,因此绑定效率很低。
  • Godot使用线程从网络或磁盘中提取和初始化数据。通用语言的脚本解释器对此并不友好。
  • Godot已经有了用于资源的内存管理模型。大多数脚本语言提供了自己的语言,这导致重复的工作和错误。
  • 绑定代码杂乱无章,会导致故障点,意外错误以及通常较低的可维护性。

考虑的结果是GDScript 。在相同的功能期间,用于GDScript的语言和解释器最终比用于Luasquirrel的绑定代码小。

有人可以看一下语法,因此这里是GDScript外观的简单示例。

# A file is a type of class! 

# Inheritance

extends BaseClass

# Member Variables

var a = 5
var s = "Hello"
var arr = [1, 2, 3]
var dict = {"key": "value", 2:3}

# Constants

const ANSWER = 42
const THE_NAME = "Charly"

# Enums

enum {UNIT_NEUTRAL, UNIT_ENEMY, UNIT_ALLY}
enum Named {THING_1, THING_2, ANOTHER_THING = -1}

# Built-in Vector Types

var v2 = Vector2(1, 2)
var v3 = Vector3(1, 2, 3)

# Function

func some_function(param1, param2):
    var local_var = 6

    if param1 < local_var:
        print(param1)
    elif param2 > 6:
        print(param2)
    else:
        print("Fail!")

    for i in range(20):
        print(i)

    while param2 != 0:
        param2 -= 1

    var local_var2 = param1 + 3
    return 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 Class

class Something:
    var a = 10

# Constructor

func _init():
    print("Constructed!")
    var lv = Something.new()
    print(lv.a)

如果我们以前有使用CC++C#之类的静态类型语言的经验,但以前从未使用过动态类型的语言,建议您阅读本教程:

语言

在下面,概述了GDScript。应该在链接的类描述中查找详细信息,例如哪些方法可用于数组或其他对象。

身份标识

将自身限制为字母字符( azAZ ),数字(0到9)和_的标识符称为标识符。此外,标识符可能不能以数字开头。标识符始终区分大小写( fooFOO不同)。