本文概述
- 操作符
- 字面量
- 注释
- 内置类型
- String
- 引擎内置类型
- 容器内置类型
- 字典
- 数据
关键字在GDScript标记程序中定义, 如下所示:
关键词 | 描述 |
---|---|
If | 查看是否/其他/其他。 |
其他 | 查看是否/其他/其他。 |
ELIF | 查看是否/其他/其他。 |
对于 | 请参阅。 |
do | 保留用于do … while循环的将来实现。 |
比赛 | 查看比赛。 |
而 | 看到一会儿。 |
案件 | 预订了下一个应用程序。 |
开关 | 它保留供将来实施。 |
打破 | 它退出当前for或while循环的执行。 |
继续 | 它会立即跳到for或while循环的下一个迭代。 |
通过 | 它使用在语法上需要语句的地方, 但是不希望执行代码, 例如在空函数中。 |
返回 | 从服务返回值。 |
类 | 定义一个类。 |
is | 测试变量是否以当前质量扩展。 |
延伸 | 说明当前课程上的课程。 |
自 | 这是指当前的类实例。 |
工具 | 它在编辑器中执行脚本。 |
信号 | 它定义了一个标志。 |
功能 | 它代表一个功能。 |
static | 它定义了一个静态函数, 并且不允许使用静态成员变量。 |
const | 定义一个常数。 |
枚举 | 它建立一个枚举。 |
是 | 它代表一个变量。 |
准备好了 | 一旦脚本附加到节点上, 并且在编辑器中可以修改其子级, 就初始化变量。 |
出口 | 它会保存一个变量及其所连接的资源, 并使其在编辑器中可见和可修改。 |
设置获取 | 它为变量定义了setter和getter函数。 |
预载 | 预加载一个类或变量。 |
断点 | 调试器断点的编辑器帮助器。 |
让 | 例行支持。 |
断言 | 声明条件, 记录失败错误。在非调试版本中被忽略。 |
远程 | 网络RPC注释。 |
主 | 网络RPC注释。 |
奴隶 | 网络RPC注释。 |
同步 | 网络RPC注释。 |
TAU | 你的不变。 |
INF | 无限是常数。用于比较。 |
NAN | NAN(不是数字)常量。用于比较。 |
PI | PI常数。 |
操作符 | 描述 |
---|---|
x [索引] | 订阅, 最高优先级 |
x。属性 | 属性参考 |
is | 实例类型检查器 |
~ | 按位非 |
-x | 负 |
*, /, % | 乘法/除法/余数注:这些运算的结果取决于操作数的类型。如果两者都是Integer, 则结果将是Integer。这意味着1/10返回0而不是0.1。如果至少一个操作数是浮点数, 则结果是浮点数:float(1)/ 10或1.0 / 10都返回0.1。 |
+, – | 加/减 |
< < , > > | 移位 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
< , > , ==, !=, > =, < = | 比较 |
in | 内容测试 |
!, 不是 | 布尔非 |
和, && | 布尔AND |
或|| | 布尔或 |
如果x其他 | 三元if / else |
=, +=, -=, *=, /=, %=, & =, |= | 分配, 最低优先级 |
字面量 | 类型 |
---|---|
45 | 以10为底的整数 |
0x8F51 | Base 16 (hex) integer |
3.14, 58.1e-10 | 浮点数(实数) |
“ 你好” | 弦乐 |
“ ” ” 你好” ” ” | 多行字符串 |
@” 节点/标签” | 节点路径或StringName |
# This is a comment.
可以在文本块的开头和结尾使用” ” (连续三个引号)来创建多行注释, 请注意, 这会创建一个字符串;因此, 在编译脚本时不会删除该字符串。
""" Everything on
these lines is considered
a comment."""
内置类型内置类型是堆栈分配的, 它们作为值传递。这意味着将在每个分配上或在将其作为函数的参数移动时创建一个副本。数组和字典是唯一的例外, 它们是通过引用给出的, 因此它们是共享的。 (尽管不像PoolByteArray这样的PoolArray, 它们也作为值传递, 所以在决定使用哪个时要考虑这一点!)
基本的内置类型
GDScript中的变量可以分配给几种内置类型。
null
它是一个空数据类型, 不包含任何信息, 也不能分配任何其他值。
布尔
布尔数据类型仅包含true或false。
int
此数据类型只能包含整数(负数和正数)。
float
它用于提供浮点值(实数)。
StringUnicode格式的字符序列。字符串可以包含标准的C转义序列。 GDScript支持格式字符串printf功能。
向量内置类型
矢量2
包含x和y字段的2D向量类型。也可以将其作为数组进行访问。
矩形2
包含两个向量字段的2D向量类型:位置和大小。或者包含一个end字段, 即position + size。
矢量3
包含x, y和z字段的3D向量类型。也可以将其作为数组进行访问。
Transfrom2D
在2D中, 使用3× 2变换矩阵。
飞机
归一化形式的3D平面类型, 包含标准矢量场和d标量距离。
夸脱
四元数是用于表示3D旋转的数据类型。对于内插旋转很有用。
AABB
轴对齐的边界框(或3D框)包含两个向量字段:位置和大小。或者包含一个结束字段, 该字段为正+大小。
基础
用于3D旋转和缩放的3× 3矩阵。它包含三个向量字段(x, y和z), 也可以作为3D向量数组访问。
转变
3D转换包含基础字段基础和Vector3字段原点。
引擎内置类型
- 颜色
- 节点路径
- RID
- Object
容器内置类型Array
从索引索引0开始对数组进行索引。从Godot 2.1开始, 索引可能像Python中一样为负, 从末尾开始计数。任意对象类型的通用序列, 包括其他数组或字典。数组可以动态调整大小。
var arr = []
arr = [1, 2, 3]
var b = arr[1] # This is 2.
var c = arr[arr.size() - 1] # This is 3.
var d = arr[-1] # Same as the previous line, but shorter.
arr[0] = "Hi!" # Replacing value 1 with "Hello".
arr.append(4) # Array is now ["Hello", 2, 3, 4].
GDScript数组在内存中线性分配以提高速度。但是, 包含数万个元素的大型数组可能会导致内存碎片。如果有问题, 可以使用特定类型的阵列。这些仅接受单个数据类型。它们避免内存碎片, 也使用更少的内存, 但它们是原子的, 并且运行速度比通用数组慢。建议将它们用于大型数据集。
- PoolByteArray:字节数组(0到255之间的整数)。
- PoolIntArray:整数数组。
- PoolStringArray:字符串数组。
- PoolcolorArray:Color对象的数组。
- PoolRealArray:的数组
- PoolVector2Array:Vector2的数组
- PoolVector3Array:Vector3的数组
var d = {4: 5, "A key": "A value", 28: [1, 2, 3]}
d["Hi!"] = 0
d = {
22: "value", "some_key": 2, "other_key": [2, 3, 4], "more_key": "Hello"
}
还支持Lua样式的表语法。 Lua风格使用=代替:, 并且不使用引号标记字符串键(这样写起来稍少)。以这种形式写的键不能以数字开头。
var d = {
test22 = "value", some_key = 2, other_key = [2, 3, 4], more_key = "Hello"
}
要将键添加到现有字典中, 请像现有键一样对其进行访问并分配给它:
var d = {} # Create an empty Dictionary.
d.waiting = 14 # Add String "Waiting" as a key and assign the value 14 to it.
d[4] = "hello" # Add integer 4 as a key and assign the String "hello" as its value.
d["Godot"] = 3.01 # Add String "Godot" as a key and assign the value 3.01 to it.
数据变数
变量可以作为类成员存在, 也可以作为函数局部存在。它们是使用var键盘创建的, 可以选择在初始化时为其分配值。
var a # Data type is 'null' .
var b = 5
var c = 3.8
var d = b + c # Variables are always initialized here.
常量
常量类似于变量, 但必须是常量或常量表达式, 并且必须在初始化时分配。
const H = 5
const G = Vector2(20, 20)
const C = 10 + 20 # Constant expression.
const D = Vector2(20, 30).x # Constant expression: 20
const E = [1, 2, 3, 4][0] # Constant expression
const F = sin(20) # sin() is used in constant expressions.
const G = x + 20 # Invalid;
It is not a constant expression!
枚举
枚举是常量的简写, 如果我们要为某个常量分配连续的整数, 则枚举非常有用。
如果我们将名称传递给枚举, 则还将所有值放入名称的常量字典中。
enum {TILE_FLOOR, TILE_BRICK, TILE_SPIKE, TILE_TELEPORT}
# Is the same as:
const TILE_FLOOR = 0
const TILE_BRICK = 3
const TILE_SPIKE = 4
const TILE_TELEPORT = 5enum State {STATE_JUMP, STATE_IDLE = 5, STATE_SHOOT}
# Is the same as:
const STATE_ JUMP= 0
const STATE_IDLE = 7
const STATE_SHOOT = 8
const State = {STATE_IDLE = 0, STATE_JUMP = 7, STATE_SHOOT = 8}
函数
函数总是属于一个类。变量查找的作用域优先级:local-class member-global。自变量始终可用, 并且作为访问类成员的选项提??供, 但并非总是必需的(与python不同, 它不能作为函数的第一个参数发送)。
func my_function(x, y):
print(x)
print(y)
return x + y# Return is optional;
without it 'null' is returned.
它可以随时返回。默认返回值为null。
推荐阅读
- GDscript中的类
- GDScript详细简介
- Godot中的设计语言
- 在Godot中导出LonnyLips游戏
- Godot中使用的语言
- 在Godot中进行线编辑
- 故事书-Godot中的JSON用法
- Godot中的按钮示例
- Godot中的queue_free()和reload_current_scene()函数