3.GDScript(1)概览

 

GDScript 是上面提到的用于Godot的主要语言。和其他语言相比,它与Godot高度整合,有许多优点:

  • 简单,优雅,设计上为Lua、Python、Squirrel等语言用户所熟悉。
  • 加载和编译速度飞快。
  • 编辑器集成非常令人愉快,有节点、信号、其它场景相关项目的代码完成。
  • 有内建矢量类型(比如Vector、Transform等),大量使用线性代数时非常有效。
  • 支持多线程,像静态类型语言一样有效 - 这是我们避免使用诸如Lua、Squirrel等虚拟机的原因之一。
  • 不使用垃圾回收器,所以它确定性地自动处理之这部分(大多数对象都是引用计数)。
  • 它的动态特性使其需要提高性能时,可以很容易地优化C++代码段(通过GDNative),而这些不需要重新编译引擎。

GDScript的例子

有些人可以通过查看语法来更好地学习,下面是GDScript的一个简单示例。

# A file is a class!

# Inheritance

extends BaseClass

# (optional) class definition with a custom icon

class_name MyClass, "res://path/to/optional/icon.svg"

# Member Variables

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

# Constants常类型

const ANSWER = 42
const THE_NAME = "Charly"

# Enum枚举

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 = 5

    if param1 < local_var:
        print(param1)
    elif param2 > 5:
        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)
posted @ 2018-12-30 01:49  宸少凌  阅读(581)  评论(0编辑  收藏  举报

万年以来谁著史,三千里外欲封侯