关键字

2024年8月29日 | 阅读 7 分钟

这些是该语言支持的键盘列表。 关键字是保留字(tokens),不能用作标识符。 运算符(如 in、not、and、or)和内置类型的名称(如下节所述)也都是保留的

键盘在 GDScript tokenizer 中定义,如下所示

关键字描述
If请参阅 if/else/elif。
else请参阅 if/else/elif
elif请参阅 if/else/elif
对于 (For)请参阅 for。
do保留供将来实现 do…while 循环。
match请参阅 match。
while请参阅 while。
case它为下一个应用程序预订。
switch它保留供将来实现。
break它退出当前 forwhile 循环的执行。
continue它立即跳到 forwhile 循环的下一次迭代。
pass它用于在语法上需要语句,但不希望执行代码的情况,例如,在空函数中
return从服务返回一个值。
class定义一个类。
is测试变量是否使用当前质量扩展。
extends解释要使用当前类达到的类。
self这指的是当前类实例。
tool它在编辑器中执行脚本。
signal它定义了一个信号。
func它表示一个函数。
static它定义一个静态函数,并且不允许静态成员变量。
const定义一个常量。
enum它建立一个枚举。
var它表示一个变量。
on ready一旦将脚本附加到的节点及其子节点在编辑器中可修改,就会初始化变量。
export它保存一个变量以及它连接的资源,并使其在编辑器中可见和可修改。
set get它为变量定义 setter 和 getter 函数。
preload预加载一个类或变量。
breakpoint用于调试器断点的编辑器助手。
yield协程支持。
assert断言一个条件,如果失败则记录错误。 在非调试版本中忽略。
remote网络 RPC 注释。
master网络 RPC 注释。
slave网络 RPC 注释。
sync网络 RPC 注释。
TAUTAU 常数。
INF无穷大是常数。 用于比较。
NANNAN(不是数字)常数。 用于比较。
PIPI 常数。

运算符

以下是支持的运算符及其优先级列表。

运算符描述
x[index]订阅,最高优先级
x.attribute属性参考
is实例类型检查器
~按位非 (Bitwise NOT)
-x消极
*,/,%乘法/除法/余数
注意:这些操作的结果取决于操作数的类型。如果两者都是整数,那么结果将是一个整数。这意味着 1/10 返回 0 而不是 0.1。如果至少有一个操作数是浮点数,那么结果就是一个浮点数:float (1)/101.0/10 都返回 0.1
+,-加法/减法
<<,>>位移
&按位与
^按位异或
|按位或
<,>,==,!=,>=,<=比较
in内容测试
!, not布尔非
and,&&布尔与运算
or,||布尔或运算
If x else三元 if/else
=,+=,-=,*=,/=,%=,&=,|=赋值,最低优先级

字面量

字面量类型
45Base 10 integer
0x8F51Base 16 (hex) integer
3.14,58.1e-10Floating-point number(real)
"Hello"," Hi"字符串
""" Hello"""Multiline string
@" Node/Label"Node path or StringName

注释

从 #(hash) 到行尾的任何内容都将被忽略并被视为注释。

可以使用 """(连续三个引号)在文本块的开头和结尾处创建多行注释。 请注意,这会创建一个字符串;因此,在编译脚本时不会将其剥离。

内置类型

内置类型是栈分配的,它们作为值传递。 这意味着在每次赋值或将它们作为参数移动到函数时都会创建一个副本。 唯一的例外是 ArrayDictionaries,它们是通过引用给出的,因此它们是共享的。 (但不是 PoolArray,例如 PoolByteArray,这些也作为值传递,因此在决定使用哪个时请考虑这一点!)

基本内置类型

GDScript 中的变量可以分配给几个内置类型。

null

它是一个空数据类型,不包含任何信息,并且不能分配任何其他值。

Bool

Boolean 数据类型仅包含 truefalse

int

此数据类型只能包含整数(负数正数)。

float

它用于提供浮点值(实数)。

String

Unicode 格式的字符序列。 字符串可以包含标准的 C 转义序列。 GDScript 支持格式化字符串 printf 功能。

向量内置类型

Vector2

包含 xy 字段的 2D 向量类型。 它也可以作为数组访问。

Rect2

包含两个向量字段的 2D 向量类型:positionsize。 或者包含一个 end 字段,它是 position+size

Vector3

包含 xyz 字段的 3D 向量类型。 这也可以作为数组访问。

Transfrom2D

在 2D 中,使用转换 3x2 矩阵。

Plane

规范化形式的 3D 平面类型,包含一个标准向量字段和一个 d 标量距离。

Quat

四元数是一种用于表示 3D 旋转的数据类型。 它对于插值旋转很有用。

AABB

轴对齐边界框(或 3D 框)包含两个向量字段:positionsize。 或者包含一个 end 字段,它是 positive + size

基础

用于 3D 旋转和缩放的 3x3 矩阵。 它包含三个向量字段(xyz),也可以作为 3D 向量数组访问。

转换(Transform)

3D 变换包含一个 basis 字段 basis 和一个 Vector3 字段 origin

引擎内置类型

  • 颜色

数据类型包含 r、g、b 和字段。 也可以访问为 hsv(用于色调/饱和度/值)。

  • NodePath

编译后的节点路径,主要用于场景系统中。 它可以很容易地分配给字符串和从字符串分配。

  • RID

资源 ID (RID)。 服务器使用通用 RID 来引用不透明数据。

  • Object

不是内置类型的任何内容的基类。

容器内置类型

Array

数组的索引从索引 0 开始。从 Godot 2.1 开始,索引可以是负数,就像在 python 中一样,从末尾开始计数。 任意对象类型的通用序列,包括其他数组或字典。 数组可以动态调整大小。

GDScript 数组在线性分配在内存中以提高速度。 但是,大型数组(超过数万个元素)可能会导致内存碎片。 如果这是一个问题,可以使用特定类型的数组。 这些只接受一种数据类型。 它们避免了内存碎片,并且使用更少的内存,但是是原子的并且往往比通用数组运行得慢。 建议将它们用于大型数据集。

  • PoolByteArray:字节数组(0 到 255 的整数)。
  • PoolIntArray:整数数组。
  • PoolStringArray:字符串数组。
  • PoolcolorArray:Color 对象数组。
  • PoolRealArray:的数组
  • PoolVector2Array:Vector2 数组
  • PoolVector3Array:Vector3 数组

字典

关联容器,其中包含由唯一键引用的值。

还支持 Lua 样式的表语法。 Lua 样式使用 = 代替:并且不使用引号来标记字符串键(从而减少了编写量)。以这种形式编写的键不能以数字开头。

要向现有字典添加键,请像访问现有键一样访问它并分配给它

数据

变量

变量可以作为类成员存在,也可以在函数中局部存在。 它们使用 var 键盘创建,并且可以选择在初始化时分配一个值。

常量

常量类似于变量,但必须是常量或常量表达式,并且必须在初始化时分配。

Enums

枚举是常量的简写,如果我们想为一些常量分配连续的整数,它们非常有用。

如果我们向枚举传递一个名称,它也会将所有值放入该名称的常量字典中。

函数

函数始终属于一个 。 用于变量查找的范围优先级:局部-类成员-全局。 self-变量始终可用,并且提供作为访问类成员的选项,但并非总是必需的(并且不像 python 那样,不能作为函数的第一个参数发送)。

它可以随时 return。 默认返回值是 null


下一个主题引用函数