@GlobalScope
全局范围的常量和函数。
描述
全局范围的枚举常量和内置函数的列表。此处的内容都是全局的,包括用于错误码、键码、属性提示等的常量。
这里还记录了单例,因为任何地方都可以访问单例。
只能在 GDScript 编写的脚本中访问的条目见 @GDScript。
备注
通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异。
教程
属性
方法
枚举
enum Side: 🔗
Side SIDE_LEFT = 0
左边,常用于 Control 或 StyleBox 的派生类。
Side SIDE_TOP = 1
顶边,常用于 Control 或 StyleBox 的派生类。
Side SIDE_RIGHT = 2
右边,常用于 Control 或 StyleBox 的派生类。
Side SIDE_BOTTOM = 3
底边,常用于 Control 或 StyleBox 的派生类。
enum Corner: 🔗
Corner CORNER_TOP_LEFT = 0
左上角。
Corner CORNER_TOP_RIGHT = 1
右上角。
Corner CORNER_BOTTOM_RIGHT = 2
右下角。
Corner CORNER_BOTTOM_LEFT = 3
左下角。
enum Orientation: 🔗
Orientation VERTICAL = 1
通用垂直对齐,常用于 Separator、ScrollBar、Slider 等。
Orientation HORIZONTAL = 0
通用水平对齐,常用于 Separator、ScrollBar、Slider 等。
enum ClockDirection: 🔗
ClockDirection CLOCKWISE = 0
顺时针旋转。被一些方法使用(例如 Image.rotate_90())。
ClockDirection COUNTERCLOCKWISE = 1
逆时针旋转。被一些方法使用(例如 Image.rotate_90())。
enum HorizontalAlignment: 🔗
HorizontalAlignment HORIZONTAL_ALIGNMENT_LEFT = 0
水平左对齐,常用于文本派生类。
HorizontalAlignment HORIZONTAL_ALIGNMENT_CENTER = 1
水平居中对齐,常用于文本派生类。
HorizontalAlignment HORIZONTAL_ALIGNMENT_RIGHT = 2
水平右对齐,常用于文本派生类。
HorizontalAlignment HORIZONTAL_ALIGNMENT_FILL = 3
扩展行以适应宽度,常用于文本派生类。
enum VerticalAlignment: 🔗
VerticalAlignment VERTICAL_ALIGNMENT_TOP = 0
垂直上对齐,常用于文本派生类。
VerticalAlignment VERTICAL_ALIGNMENT_CENTER = 1
垂直居中对齐,常用于文本派生类。
VerticalAlignment VERTICAL_ALIGNMENT_BOTTOM = 2
垂直下对齐,常用于文本派生类。
VerticalAlignment VERTICAL_ALIGNMENT_FILL = 3
扩展行以适应高度,通常用于文本派生类。
enum InlineAlignment: 🔗
InlineAlignment INLINE_ALIGNMENT_TOP_TO = 0
将内联对象(例如图像、表格)的顶部与 INLINE_ALIGNMENT_TO_* 常量指定的文本位置对齐。
InlineAlignment INLINE_ALIGNMENT_CENTER_TO = 1
将内联对象(例如图像、表格)的中心与 INLINE_ALIGNMENT_TO_* 常量指定的文本位置对齐。
InlineAlignment INLINE_ALIGNMENT_BASELINE_TO = 3
将内联对象(如图像、表格)的基线(用户定义)与INLINE_ALIGNMENT_TO_* 常数指定的文本位置对齐。
InlineAlignment INLINE_ALIGNMENT_BOTTOM_TO = 2
将内联对象(例如图像、表格)的底部与 INLINE_ALIGNMENT_TO_* 常量指定的文本位置对齐。
InlineAlignment INLINE_ALIGNMENT_TO_TOP = 0
将由 INLINE_ALIGNMENT_*_TO 常量指定的内联对象(例如图像、表格)的位置与文本顶部对齐。
InlineAlignment INLINE_ALIGNMENT_TO_CENTER = 4
将由 INLINE_ALIGNMENT_*_TO 常量指定的内联对象(例如图像、表格)的位置与文本中心对齐。
InlineAlignment INLINE_ALIGNMENT_TO_BASELINE = 8
将由 INLINE_ALIGNMENT_*_TO 常量指定的内联对象(例如图像、表格)的位置与文本基线对齐。
InlineAlignment INLINE_ALIGNMENT_TO_BOTTOM = 12
将内联对象(例如图像、表格)与文本底部对齐。
InlineAlignment INLINE_ALIGNMENT_TOP = 0
将内联对象(例如图像、表格)的顶部与文本的顶部对齐。等效于 INLINE_ALIGNMENT_TOP_TO | INLINE_ALIGNMENT_TO_TOP。
InlineAlignment INLINE_ALIGNMENT_CENTER = 5
将内联对象(例如图像、表格)的中心与文本的中心对齐。相当于 INLINE_ALIGNMENT_CENTER_TO | INLINE_ALIGNMENT_TO_CENTER。
InlineAlignment INLINE_ALIGNMENT_BOTTOM = 14
将内联对象(例如图像、表格)的底部与文本底部对齐。等效于 INLINE_ALIGNMENT_BOTTOM_TO | INLINE_ALIGNMENT_TO_BOTTOM。
InlineAlignment INLINE_ALIGNMENT_IMAGE_MASK = 3
用于 INLINE_ALIGNMENT_*_TO 对齐常量的位掩码。
InlineAlignment INLINE_ALIGNMENT_TEXT_MASK = 12
用于 INLINE_ALIGNMENT_TO_* 对齐常量的位掩码。
enum EulerOrder: 🔗
EulerOrder EULER_ORDER_XYZ = 0
指定欧拉角应按 XYZ 顺序排列。组合时顺序为 X、Y、Z。分解时顺序相反,先 Z、再 Y、最后 X。
EulerOrder EULER_ORDER_XZY = 1
指定欧拉角应按 XZY 顺序排列。组合时顺序为 X、Z、Y。分解时顺序相反,先 Y、再 Z、最后 X。
EulerOrder EULER_ORDER_YXZ = 2
指定欧拉角应按 YXZ 顺序排列。组合时顺序为 Y、X、Z。分解时顺序相反,先 Z、再 X、最后 Y。
EulerOrder EULER_ORDER_YZX = 3
指定欧拉角应按 YZX 顺序排列。组合时顺序为 Y、Z、X。分解时顺序相反,先 X、再 Z、最后 Y。
EulerOrder EULER_ORDER_ZXY = 4
指定欧拉角应按 ZXY 顺序排列。组合时顺序为 Z、X、Y。分解时顺序相反,先 Y、再 X、最后 Z。
EulerOrder EULER_ORDER_ZYX = 5
指定欧拉角应按 ZYX 顺序排列。组合时顺序为 Z、Y、X。分解时顺序相反,先 X、再 Y、最后 Z。
enum Key: 🔗
Key KEY_NONE = 0
与任何键都不对应的枚举值。这用于初始化具有通用状态的 Key 属性。
Key KEY_SPECIAL = 4194304
应用此位的键码不可打印。
Key KEY_ESCAPE = 4194305
ESC 键。
Key KEY_TAB = 4194306
Tab 键。
Key KEY_BACKTAB = 4194307
Shift + Tab 键。
Key KEY_BACKSPACE = 4194308
退格键。
Key KEY_ENTER = 4194309
回车键(位于主键盘)。
Key KEY_KP_ENTER = 4194310
小键盘区的回车键。
Key KEY_INSERT = 4194311
Insert 键。
Key KEY_DELETE = 4194312
Delete 键。
Key KEY_PAUSE = 4194313
Pause 键。
Key KEY_PRINT = 4194314
Print Screen 键。
Key KEY_SYSREQ = 4194315
System Request 键。
Key KEY_CLEAR = 4194316
Clear 键。
Key KEY_HOME = 4194317
Home 键。
Key KEY_END = 4194318
End 键。
Key KEY_LEFT = 4194319
左方向键。
Key KEY_UP = 4194320
上方向键。
Key KEY_RIGHT = 4194321
右方向键。
Key KEY_DOWN = 4194322
下方向键。
Key KEY_PAGEUP = 4194323
Page Up 键。
Key KEY_PAGEDOWN = 4194324
Page Down 键。
Key KEY_SHIFT = 4194325
Shift 键。
Key KEY_CTRL = 4194326
Control 键。
Key KEY_META = 4194327
Meta 键。
Key KEY_ALT = 4194328
Alt 键。
Key KEY_CAPSLOCK = 4194329
Caps Lock 键。
Key KEY_NUMLOCK = 4194330
Num Lock 键。
Key KEY_SCROLLLOCK = 4194331
Scroll Lock 键。
Key KEY_F1 = 4194332
F1 键。
Key KEY_F2 = 4194333
F2 键。
Key KEY_F3 = 4194334
F3 键。
Key KEY_F4 = 4194335
F4 键。
Key KEY_F5 = 4194336
F5 键。
Key KEY_F6 = 4194337
F6 键。
Key KEY_F7 = 4194338
F7 键。
Key KEY_F8 = 4194339
F8 键。
Key KEY_F9 = 4194340
F9 键。
Key KEY_F10 = 4194341
F10 键。
Key KEY_F11 = 4194342
F11 键。
Key KEY_F12 = 4194343
F12 键。
Key KEY_F13 = 4194344
F13 键。
Key KEY_F14 = 4194345
F14 键。
Key KEY_F15 = 4194346
F15 键。
Key KEY_F16 = 4194347
F16 键。
Key KEY_F17 = 4194348
F17 键。
Key KEY_F18 = 4194349
F18 键。
Key KEY_F19 = 4194350
F19 键。
Key KEY_F20 = 4194351
F20 键。
Key KEY_F21 = 4194352
F21 键。
Key KEY_F22 = 4194353
F22 键。
Key KEY_F23 = 4194354
F23 键。
Key KEY_F24 = 4194355
F24 键。
Key KEY_F25 = 4194356
F25 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F26 = 4194357
F26 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F27 = 4194358
F27 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F28 = 4194359
F28 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F29 = 4194360
F29 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F30 = 4194361
F30 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F31 = 4194362
F31 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F32 = 4194363
F32 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F33 = 4194364
F33 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F34 = 4194365
F34 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_F35 = 4194366
F35 键。由于 Windows 限制,仅支持 macOS 和 Linux。
Key KEY_KP_MULTIPLY = 4194433
小键盘的星键/乘以键(*)。
Key KEY_KP_DIVIDE = 4194434
小键盘的除以键(/)。
Key KEY_KP_SUBTRACT = 4194435
小键盘的减号键(-)。
Key KEY_KP_PERIOD = 4194436
小键盘的点键(.)。
Key KEY_KP_ADD = 4194437
小键盘的加号键(+)。
Key KEY_KP_0 = 4194438
小键盘的数字 0。
Key KEY_KP_1 = 4194439
小键盘的数字 1。
Key KEY_KP_2 = 4194440
小键盘的数字 2。
Key KEY_KP_3 = 4194441
小键盘的数字 3。
Key KEY_KP_4 = 4194442
小键盘的数字 4。
Key KEY_KP_5 = 4194443
小键盘的数字 5。
Key KEY_KP_6 = 4194444
小键盘的数字 6。
Key KEY_KP_7 = 4194445
小键盘的数字 7。
Key KEY_KP_8 = 4194446
小键盘的数字 8。
Key KEY_KP_9 = 4194447
小键盘的数字 9。
上下文菜单键。
Key KEY_HYPER = 4194371
超级键。(仅在 Linux/X11 上)。
Key KEY_HELP = 4194373
Help 键。
Key KEY_BACK = 4194376
向后键。
Key KEY_FORWARD = 4194377
向前键。
Key KEY_STOP = 4194378
媒体停止播放键。
Key KEY_REFRESH = 4194379
刷新键。
Key KEY_VOLUMEDOWN = 4194380
音量降低键。
Key KEY_VOLUMEMUTE = 4194381
静音键。
Key KEY_VOLUMEUP = 4194382
音量升高键。
Key KEY_MEDIAPLAY = 4194388
媒体播放键。
Key KEY_MEDIASTOP = 4194389
媒体停止播放键。
Key KEY_MEDIAPREVIOUS = 4194390
上一首歌键。
Key KEY_MEDIANEXT = 4194391
下一首歌键。
Key KEY_MEDIARECORD = 4194392
媒体录制键。
Key KEY_HOMEPAGE = 4194393
主页键。
Key KEY_FAVORITES = 4194394
收藏键。
Key KEY_SEARCH = 4194395
搜索键。
Key KEY_STANDBY = 4194396
Standby 键。
Key KEY_OPENURL = 4194397
打开 URL / 启动浏览器键。
Key KEY_LAUNCHMAIL = 4194398
启动邮箱键。
Key KEY_LAUNCHMEDIA = 4194399
启动多媒体键。
Key KEY_LAUNCH0 = 4194400
快捷启动键 0。
Key KEY_LAUNCH1 = 4194401
快捷启动键 1。
Key KEY_LAUNCH2 = 4194402
快捷启动键 2。
Key KEY_LAUNCH3 = 4194403
快捷启动键 3。
Key KEY_LAUNCH4 = 4194404
快捷启动键 4。
Key KEY_LAUNCH5 = 4194405
快捷启动键 5。
Key KEY_LAUNCH6 = 4194406
快捷启动键 6。
Key KEY_LAUNCH7 = 4194407
快捷启动键 7。
Key KEY_LAUNCH8 = 4194408
快捷启动键 8。
Key KEY_LAUNCH9 = 4194409
快捷启动键 9。
Key KEY_LAUNCHA = 4194410
快捷启动键 A。
Key KEY_LAUNCHB = 4194411
快捷启动键 B。
Key KEY_LAUNCHC = 4194412
快捷启动键 C。
Key KEY_LAUNCHD = 4194413
快捷启动键 D。
Key KEY_LAUNCHE = 4194414
快捷启动键 E。
Key KEY_LAUNCHF = 4194415
快捷启动键 F。
Key KEY_GLOBE = 4194416
Mac / iPad 键盘上的“地球”键。
Key KEY_KEYBOARD = 4194417
iPad 键盘上的“屏幕键盘”键。
Key KEY_JIS_EISU = 4194418
Mac 键盘上的“英数”键。
Key KEY_JIS_KANA = 4194419
Mac 键盘上的“かな”键。
Key KEY_UNKNOWN = 8388607
未知键。
Key KEY_SPACE = 32
空格键。
Key KEY_EXCLAM = 33
感叹号(!)键。
Key KEY_QUOTEDBL = 34
双引号(")键。
Key KEY_NUMBERSIGN = 35
数字符号即井号(#)键。
Key KEY_DOLLAR = 36
美元符号($)键。
Key KEY_PERCENT = 37
百分号(%)键。
Key KEY_AMPERSAND = 38
与号(&)键。
Key KEY_APOSTROPHE = 39
撇号(')键。
Key KEY_PARENLEFT = 40
左括号(()键。
Key KEY_PARENRIGHT = 41
右括号())键。
Key KEY_ASTERISK = 42
星号(*)键。
Key KEY_PLUS = 43
加号(+)键。
Key KEY_COMMA = 44
逗号(,)键。
Key KEY_MINUS = 45
减号(-)键。
Key KEY_PERIOD = 46
句号(.)键。
Key KEY_SLASH = 47
正斜杠(/)键。
Key KEY_0 = 48
数字 0 键。
Key KEY_1 = 49
数字 1 键。
Key KEY_2 = 50
数字 2 键。
Key KEY_3 = 51
数字 3 键。
Key KEY_4 = 52
数字 4 键。
Key KEY_5 = 53
数字 5 键。
Key KEY_6 = 54
数字 6 键。
Key KEY_7 = 55
数字 7 键。
Key KEY_8 = 56
数字 8 键。
Key KEY_9 = 57
数字 9 键。
Key KEY_COLON = 58
冒号(:)键。
Key KEY_SEMICOLON = 59
分号(;)键。
Key KEY_LESS = 60
小于号(<)键。
Key KEY_EQUAL = 61
等于号(=)键。
Key KEY_GREATER = 62
大于号(>)键。
Key KEY_QUESTION = 63
问号(?)键。
Key KEY_AT = 64
艾特号(@)键。
Key KEY_A = 65
A 键。
Key KEY_B = 66
B 键。
Key KEY_C = 67
C 键。
Key KEY_D = 68
D 键。
Key KEY_E = 69
E 键。
Key KEY_F = 70
F 键。
Key KEY_G = 71
G 键。
Key KEY_H = 72
H 键。
Key KEY_I = 73
I 键。
Key KEY_J = 74
J 键。
Key KEY_K = 75
K 键。
Key KEY_L = 76
L 键。
Key KEY_M = 77
M 键。
Key KEY_N = 78
N 键。
Key KEY_O = 79
O 键。
Key KEY_P = 80
P 键。
Key KEY_Q = 81
Q 键。
Key KEY_R = 82
R 键。
Key KEY_S = 83
S 键。
Key KEY_T = 84
T 键。
Key KEY_U = 85
U 键。
Key KEY_V = 86
V 键。
Key KEY_W = 87
W 键。
Key KEY_X = 88
X 键。
Key KEY_Y = 89
Y 键。
Key KEY_Z = 90
Z 键。
Key KEY_BRACKETLEFT = 91
左中括号([lb])键。
Key KEY_BACKSLASH = 92
反斜杠(\)键。
Key KEY_BRACKETRIGHT = 93
右中括号([rb])键。
Key KEY_ASCIICIRCUM = 94
脱字符(^)键。
Key KEY_UNDERSCORE = 95
下划线(_)键。
Key KEY_QUOTELEFT = 96
重音符(`)键。
Key KEY_BRACELEFT = 123
左大括号({)键。
Key KEY_BAR = 124
垂直的条或竖线(|键)。
Key KEY_BRACERIGHT = 125
右大括号(})键。
Key KEY_ASCIITILDE = 126
波浪线(~)键。
Key KEY_YEN = 165
日元符号(¥)键。
Key KEY_SECTION = 167
章节号(§)键。
flags KeyModifierMask: 🔗
KeyModifierMask KEY_CODE_MASK = 8388607
键码掩码。
KeyModifierMask KEY_MODIFIER_MASK = 2130706432
修饰键掩码。
KeyModifierMask KEY_MASK_CMD_OR_CTRL = 16777216
自动重映射为 macOS 上的 KEY_META 和其他平台上的 KEY_CTRL,此掩码在实际事件中从不设置,应仅用于键映射。
KeyModifierMask KEY_MASK_SHIFT = 33554432
Shift 键掩码。
KeyModifierMask KEY_MASK_ALT = 67108864
Alt 或 Option(在 macOS 上)键掩码。
KeyModifierMask KEY_MASK_META = 134217728
命令(在 macOS 上)或 Meta/Windows 键掩码。
KeyModifierMask KEY_MASK_CTRL = 268435456
Ctrl 键掩码。
KeyModifierMask KEY_MASK_KPAD = 536870912
Keypad 键掩码。
KeyModifierMask KEY_MASK_GROUP_SWITCH = 1073741824
Group Switch 键掩码。
enum KeyLocation: 🔗
KeyLocation KEY_LOCATION_UNSPECIFIED = 0
用于仅出现一次的键,或者当比较不需要区分 LEFT 和 RIGHT 版本时。
例如,当使用 InputEvent.is_match() 时,具有 KEY_LOCATION_UNSPECIFIED 的事件将与传递的事件上的任意 KeyLocation 匹配。
KeyLocation KEY_LOCATION_LEFT = 1
对键中位于左侧的键。
KeyLocation KEY_LOCATION_RIGHT = 2
对键中位于右侧的键。
enum MouseButton: 🔗
MouseButton MOUSE_BUTTON_NONE = 0
与任何鼠标按钮都不对应的枚举值。这用于初始化具有通用状态的 MouseButton 属性。
MouseButton MOUSE_BUTTON_LEFT = 1
鼠标主键,通常分配给左键。
MouseButton MOUSE_BUTTON_RIGHT = 2
鼠标次键,通常分配给右键。
MouseButton MOUSE_BUTTON_MIDDLE = 3
鼠标中键。
MouseButton MOUSE_BUTTON_WHEEL_UP = 4
鼠标滚轮向上滚动。
MouseButton MOUSE_BUTTON_WHEEL_DOWN = 5
鼠标滚轮向下滚动。
MouseButton MOUSE_BUTTON_WHEEL_LEFT = 6
鼠标滚轮左键(仅在某些鼠标上有实现)。
MouseButton MOUSE_BUTTON_WHEEL_RIGHT = 7
鼠标滚轮右键(仅在某些鼠标上有实现)。
MouseButton MOUSE_BUTTON_XBUTTON1 = 8
鼠标额外键 1。有时会出现,通常位于鼠标的两侧。
MouseButton MOUSE_BUTTON_XBUTTON2 = 9
鼠标额外键 2。有时会出现,通常位于鼠标的两侧。
flags MouseButtonMask: 🔗
MouseButtonMask MOUSE_BUTTON_MASK_LEFT = 1
鼠标主键掩码,通常用于左键。
MouseButtonMask MOUSE_BUTTON_MASK_RIGHT = 2
鼠标次键掩码,通常用于右键。
MouseButtonMask MOUSE_BUTTON_MASK_MIDDLE = 4
鼠标中键掩码。
MouseButtonMask MOUSE_BUTTON_MASK_MB_XBUTTON1 = 128
鼠标额外键 1 掩码。
MouseButtonMask MOUSE_BUTTON_MASK_MB_XBUTTON2 = 256
鼠标额外键 2 掩码。
enum JoyButton: 🔗
JoyButton JOY_BUTTON_INVALID = -1
无效的游戏控制器按钮。
JoyButton JOY_BUTTON_A = 0
游戏控制器 SDL 按键 A。对应底部动作按钮:Sony Cross、Xbox A、Nintendo B。
JoyButton JOY_BUTTON_B = 1
游戏控制器 SDL 按钮 B。对应右侧动作按钮:Sony Circle、Xbox B、Nintendo A。
JoyButton JOY_BUTTON_X = 2
游戏控制器 SDL 按钮 X。对应左侧动作按钮:Sony Square、Xbox X、Nintendo Y。
JoyButton JOY_BUTTON_Y = 3
游戏控制器 SDL 按钮 Y。对应顶部动作按钮:Sony Triangle、Xbox Y、Nintendo X。
JoyButton JOY_BUTTON_BACK = 4
游戏控制器 SDL back 按钮。对应于 Sony Select、Xbox Back、Nintendo - 按钮。
JoyButton JOY_BUTTON_GUIDE = 5
游戏控制器 SDL guide 按钮。对应于索尼 PS、Xbox 的 Home 键。
JoyButton JOY_BUTTON_START = 6
游戏控制器 SDL start 按钮。对应于 Sony Options、Xbox Menu、Nintendo + 按钮。
JoyButton JOY_BUTTON_LEFT_STICK = 7
游戏控制器 SDL 左摇杆按钮。对应于 Sony L3、Xbox L/LS 按钮。
JoyButton JOY_BUTTON_RIGHT_STICK = 8
游戏控制器 SDL 右摇杆按钮。对应于 Sony R3、Xbox R/RS 按钮。
JoyButton JOY_BUTTON_LEFT_SHOULDER = 9
游戏控制器 SDL 左肩按钮。对应于 Sony L1、Xbox LB 按钮。
JoyButton JOY_BUTTON_RIGHT_SHOULDER = 10
游戏控制器 SDL 右肩按钮。对应于 Sony R1、Xbox RB 按钮。
JoyButton JOY_BUTTON_DPAD_UP = 11
游戏控制器方向键向上按钮。
JoyButton JOY_BUTTON_DPAD_DOWN = 12
游戏控制器方向键向下按钮。
JoyButton JOY_BUTTON_DPAD_LEFT = 13
游戏控制器方向键向左键。
JoyButton JOY_BUTTON_DPAD_RIGHT = 14
游戏控制器方向键向右键。
JoyButton JOY_BUTTON_MISC1 = 15
游戏控制器 SDL 杂项按钮。对应 Xbox 分享键、PS5 麦克风键、Nintendo Switch 捕捉键。
JoyButton JOY_BUTTON_PADDLE1 = 16
游戏控制器 SDL 拨片 1 按钮。
JoyButton JOY_BUTTON_PADDLE2 = 17
游戏控制器 SDL 拨片 2 按钮。
JoyButton JOY_BUTTON_PADDLE3 = 18
游戏控制器 SDL 拨片 3 按钮。
JoyButton JOY_BUTTON_PADDLE4 = 19
游戏控制器 SDL 拨片 4 按钮。
JoyButton JOY_BUTTON_TOUCHPAD = 20
游戏控制器 SDL 触摸板按钮。
JoyButton JOY_BUTTON_SDL_MAX = 21
SDL 游戏控制器按钮的数量。
JoyButton JOY_BUTTON_MAX = 128
引擎所支持的最大游戏控制器按钮数。特定平台上的实际界限可能更低:
Android:最多 36 个按钮。
Linux:最多 80 个按钮。
Windows 和 macOS:最多 128 个按钮。
enum JoyAxis: 🔗
JoyAxis JOY_AXIS_INVALID = -1
无效的游戏控制器轴。
JoyAxis JOY_AXIS_LEFT_X = 0
游戏控制器左操纵杆 x 轴。
JoyAxis JOY_AXIS_LEFT_Y = 1
游戏控制器左操纵杆 y 轴。
JoyAxis JOY_AXIS_RIGHT_X = 2
游戏控制器右操纵杆 x 轴。
JoyAxis JOY_AXIS_RIGHT_Y = 3
游戏控制器右操纵杆 y 轴。
JoyAxis JOY_AXIS_TRIGGER_LEFT = 4
游戏控制器左扳机轴。
JoyAxis JOY_AXIS_TRIGGER_RIGHT = 5
游戏控制器右扳机轴。
JoyAxis JOY_AXIS_SDL_MAX = 6
SDL 游戏控制器轴的数量。
JoyAxis JOY_AXIS_MAX = 10
最大游戏控制器轴数:OpenVR 最多支持 5 个操纵杆,总共 10 个轴。
enum MIDIMessage: 🔗
MIDIMessage MIDI_MESSAGE_NONE = 0
不对应任何 MIDI 消息。这是 InputEventMIDI.message 的默认值。
MIDIMessage MIDI_MESSAGE_NOTE_OFF = 8
音符被释放时发送的 MIDI 消息。
注意:并非所有 MIDI 设备都会发送该消息;有些可能会发送 MIDI_MESSAGE_NOTE_ON,并将 InputEventMIDI.velocity 设置为 0。
MIDIMessage MIDI_MESSAGE_NOTE_ON = 9
音符被按下时发送的 MIDI 消息。
MIDIMessage MIDI_MESSAGE_AFTERTOUCH = 10
发送 MIDI 消息以指示音符被按下时的压力的变化,也称为触后。
MIDIMessage MIDI_MESSAGE_CONTROL_CHANGE = 11
控制器值发生变化时发送的 MIDI 消息。MIDI 设备中不演奏音符的输入都属于控制器。包括音量滑块、平衡滑块、声像滑块,以及各种开关和踏板等。简要清单见 General MIDI 规范。
MIDIMessage MIDI_MESSAGE_PROGRAM_CHANGE = 12
MIDI 设备更改乐器(也叫音色或预设)时发送的 MIDI 消息。
MIDIMessage MIDI_MESSAGE_CHANNEL_PRESSURE = 13
表示整个通道的压力发生改变时发送的 MIDI 消息。部分 MIDI 设备可能用这个消息来代替 MIDI_MESSAGE_AFTERTOUCH。
MIDIMessage MIDI_MESSAGE_PITCH_BEND = 14
音高弯曲器的值发生改变时发送的 MIDI 消息,音高弯曲器通常是 MIDI 设备上的滚轮。
MIDIMessage MIDI_MESSAGE_SYSTEM_EXCLUSIVE = 240
MIDI 系统独占消息(SysEx)。这类消息并未标准化,取决于发送的 MIDI 设备。
注意:尚未实现从 InputEventMIDI 获取该消息。
MIDIMessage MIDI_MESSAGE_QUARTER_FRAME = 241
每四分之一帧发送的 MIDI 消息,用于让连接的 MIDI 设备保持同步。与 MIDI_MESSAGE_TIMING_CLOCK 相关。
注意:尚未实现从 InputEventMIDI 获取该消息。
MIDIMessage MIDI_MESSAGE_SONG_POSITION_POINTER = 242
跳转至当前序列或乐曲中的某个位置时发送的 MIDI 消息。
注意:尚未实现从 InputEventMIDI 获取该消息。
MIDIMessage MIDI_MESSAGE_SONG_SELECT = 243
发送以选择要播放的序列或歌曲的 MIDI 消息。
注意:从 InputEventMIDI 获取该消息的数据尚未实现。
MIDIMessage MIDI_MESSAGE_TUNE_REQUEST = 246
请求调校时发送的 MIDI 消息。适用于模拟合成器。大多数现代 MIDI 设备不需要这个消息。
MIDIMessage MIDI_MESSAGE_TIMING_CLOCK = 248
在 MIDI_MESSAGE_QUARTER_FRAME 之后发送 24 次的 MIDI 消息,用于让连接的 MIDI 设备保持同步。
MIDIMessage MIDI_MESSAGE_START = 250
发送以从头开始当前序列或歌曲的 MIDI 消息。
MIDIMessage MIDI_MESSAGE_CONTINUE = 251
发送以从当前序列或歌曲的暂停点恢复的 MIDI 消息。
MIDIMessage MIDI_MESSAGE_STOP = 252
发送以暂停当前序列或歌曲的 MIDI 消息。
MIDIMessage MIDI_MESSAGE_ACTIVE_SENSING = 254
MIDI 设备空闲时不断发送的 MIDI 消息,用于告知接收方连接仍然有效。大多数 MIDI 设备不会发送这个消息。
MIDIMessage MIDI_MESSAGE_SYSTEM_RESET = 255
用于将 MIDI 设备恢复至开机时的默认状态而发送的 MIDI 消息。MIDI 设备正在启动时不应该发送。
enum Error: 🔗
Error OK = 0
由于 OK 的值为 0,并且所有其他错误常数都是正整数,因此返回值也可以用于布尔检查。
var error = method_that_returns_error()
if error != OK:
printerr("失败!")
# 或者也可以:
if error:
printerr("还是失败!")
注意:许多函数不返回错误代码,但会将错误信息打印到标准输出。
Error FAILED = 1
一般性错误。
不可用的错误。
Error ERR_UNCONFIGURED = 3
未配置的错误。
Error ERR_UNAUTHORIZED = 4
未经授权的错误。
Error ERR_PARAMETER_RANGE_ERROR = 5
参数范围错误。
Error ERR_OUT_OF_MEMORY = 6
内存不足(OOM)错误。
Error ERR_FILE_NOT_FOUND = 7
文件:未找到错误。
Error ERR_FILE_BAD_DRIVE = 8
文件:坏驱动器错误。
Error ERR_FILE_BAD_PATH = 9
文件:错误的路径错误。
Error ERR_FILE_NO_PERMISSION = 10
文件:无权限错误。
Error ERR_FILE_ALREADY_IN_USE = 11
文件:已在使用错误。
Error ERR_FILE_CANT_OPEN = 12
文件:无法打开错误。
Error ERR_FILE_CANT_WRITE = 13
文件:无法写入错误。
Error ERR_FILE_CANT_READ = 14
文件:无法读取错误。
Error ERR_FILE_UNRECOGNIZED = 15
文件:未识别的错误。
Error ERR_FILE_CORRUPT = 16
文件:损坏错误。
Error ERR_FILE_MISSING_DEPENDENCIES = 17
文件:缺少依赖项错误。
Error ERR_FILE_EOF = 18
文件:文件结束(EOF)错误。
Error ERR_CANT_OPEN = 19
无法打开错误。
Error ERR_CANT_CREATE = 20
无法创建错误。
Error ERR_QUERY_FAILED = 21
查询失败错误。
Error ERR_ALREADY_IN_USE = 22
已在使用中错误。
Error ERR_LOCKED = 23
锁定错误。
Error ERR_TIMEOUT = 24
超时错误。
Error ERR_CANT_CONNECT = 25
无法连接错误。
Error ERR_CANT_RESOLVE = 26
无法解决错误。
Error ERR_CONNECTION_ERROR = 27
连接错误。
Error ERR_CANT_ACQUIRE_RESOURCE = 28
无法获取资源错误。
Error ERR_CANT_FORK = 29
无法分叉进程错误。
Error ERR_INVALID_DATA = 30
无效数据错误。
Error ERR_INVALID_PARAMETER = 31
无效参数错误。
Error ERR_ALREADY_EXISTS = 32
已存在的错误。
Error ERR_DOES_NOT_EXIST = 33
不存在的错误。
Error ERR_DATABASE_CANT_READ = 34
数据库:读取错误。
Error ERR_DATABASE_CANT_WRITE = 35
数据库:写入错误。
Error ERR_COMPILATION_FAILED = 36
编译失败错误。
Error ERR_METHOD_NOT_FOUND = 37
方法未找到错误。
Error ERR_LINK_FAILED = 38
链接失败错误。
Error ERR_SCRIPT_FAILED = 39
脚本失败错误。
Error ERR_CYCLIC_LINK = 40
循环链接(导入循环)错误。
Error ERR_INVALID_DECLARATION = 41
无效声明错误。
Error ERR_DUPLICATE_SYMBOL = 42
符号重复错误。
Error ERR_PARSE_ERROR = 43
解析错误。
Error ERR_BUSY = 44
忙碌错误。
Error ERR_SKIP = 45
跳过错误。
Error ERR_HELP = 46
帮助错误。内部使用,用于将 --version 或 --help 作为选项传递给可执行文件的情况。
Error ERR_BUG = 47
Bug 错误,由方法中的实现问题引起。
注意:如果内置方法返回此代码,请在 GitHub 问题追踪器 上开一个问题。
Error ERR_PRINTER_ON_FIRE = 48
打印机起火错误(这是个彩蛋,引擎中没有内置方法会返回此错误码)。
enum PropertyHint: 🔗
PropertyHint PROPERTY_HINT_NONE = 0
该属性没有编辑器提示。
PropertyHint PROPERTY_HINT_RANGE = 1
提示 int 或 float 属性应处于指定范围内。范围通过提示字符串 "最小值,最大值" 或 "最小值,最大值,步长" 指定。该提示字符串可选包含 "or_greater" 和/或 "or_less",从而允许手动输入值分别超出最大值或最小值。
示例:"-360,360,1,or_greater,or_less"。
此外,还可以包含其他关键字:"exp" 表示按指数范围编辑;"radians_as_degrees" 表示以角度编辑弧度(同时范围值也以角度为单位);"degrees" 表示属性为角度;"prefer_slider" 表示对整数显示滑块;"hide_control" 表示隐藏滑块或上下箭头;"suffix:unit" 表示显示单位后缀(例如 "suffix:px/s" 表示像素每秒)。
PropertyHint PROPERTY_HINT_ENUM = 2
提示 int 、 String 或 StringName 属性是枚举值,可通过提示字符串在指定的列表中选取。
该提示字符串是逗号分隔的名称列表,例如 "Hello,Something,Else"。 不会从名称的任何一端删除空格。对于整数属性,列表中的第一个名称的值为 0,下一个名称的值为 1,依此类推。也可以通过将 :integer 附加到名称来显式指定值,例如 "Zero,One,Three:3,Four,Six:6"。
PropertyHint PROPERTY_HINT_ENUM_SUGGESTION = 3
提示 String 或 StringName 属性为枚举值,可以通过提示字符串在指定的列表中选取,例如 "Hello,Something,Else"。
与 PROPERTY_HINT_ENUM 不同,具有该提示的属性仍然接受任意值并且可以为空。值列表用于建议可能的值。
PropertyHint PROPERTY_HINT_EXP_EASING = 4
提示应通过指数缓动函数编辑 float 属性。提示字符串可以包括 "attenuation" 以水平翻转曲线,和/或 "positive_only" 以排除 in/out 缓动并限制值大于或等于零。
PropertyHint PROPERTY_HINT_LINK = 5
提示向量属性应该允许分量链接。例如,这能够让 Vector2.x 和 Vector2.y 被一起编辑。
PropertyHint PROPERTY_HINT_FLAGS = 6
提示 int 属性为位掩码,位标志拥有名称。
提示字符串为逗号分隔的名称列表,例如 "Bit0,Bit1,Bit2,Bit3"。名称两端的空白字符不会被移除。列表中的第一个名称的值为 1、然后是 2、接下来就是 4、8、16 等值。也可以通过在名称后加上 :整数 来显式指定数值,例如 "A:4,B:8,C:16"。你还可以对多个标志进行组合("A:4,B:8,AB:12,C:16")。
注意:标志值最少为 1,最多为 2 ** 32 - 1。
注意:与 PROPERTY_HINT_ENUM 不同,显式值不被纳入自动递增考虑。提示为 "A:16,B,C"时,A 为 16、B 为 2、C 为 4。
PropertyHint PROPERTY_HINT_LAYERS_2D_RENDER = 7
提示 int 属性为位掩码,表示可命名的 2D 渲染层。
PropertyHint PROPERTY_HINT_LAYERS_2D_PHYSICS = 8
提示 int 属性为位掩码,表示可命名的 2D 物理层。
提示 int 属性为位掩码,表示可命名的 2D 导航层。
PropertyHint PROPERTY_HINT_LAYERS_3D_RENDER = 10
提示 int 属性为位掩码,表示可命名的 3D 渲染层。
PropertyHint PROPERTY_HINT_LAYERS_3D_PHYSICS = 11
提示 int 属性为位掩码,表示可命名的 3D 物理层。
提示 int 属性为位掩码,表示可命名的 3D 导航层。
PropertyHint PROPERTY_HINT_LAYERS_AVOIDANCE = 37
提示整数属性为位掩码,表示可命名的避障层。
PropertyHint PROPERTY_HINT_FILE = 13
提示 String 属性为文件的路径。编辑时会弹出选取路径的文件对话框。提示字符串可以设为一组带有通配符的筛选器,例如 "*.png,*.jpg"。默认情况下,如果文件的 UID 可用,则会以 UID 形式进行存储。可以使用 ResourceUID 中的方法将 UID 转换回路径。要存储原始路径,请使用 PROPERTY_HINT_FILE_PATH。
PropertyHint PROPERTY_HINT_DIR = 14
提示 String 属性为目录的路径。编辑时会弹出选取路径的文件对话框。
PropertyHint PROPERTY_HINT_GLOBAL_FILE = 15
提示 String 属性为文件的绝对路径,位于项目文件夹之外。编辑时会弹出选取路径的文件对话框。提示字符串可以设为一组带有通配符的筛选器,例如 "*.png,*.jpg"。
PropertyHint PROPERTY_HINT_GLOBAL_DIR = 16
提示 String 属性为目录的绝对路径,位于项目文件夹之外。编辑时会弹出选取路径的文件对话框。
PropertyHint PROPERTY_HINT_RESOURCE_TYPE = 17
提示属性是 Resource 派生类型的实例,可通过提示字符串指定(例如 "Texture2D")。 编辑该属性会显示一个有效资源类型的弹出菜单用以实例化。
PropertyHint PROPERTY_HINT_MULTILINE_TEXT = 18
提示一个String属性是带有换行的文本。编辑它将显示一个可以输入换行的文本输入框。
提示字符串可以设置为"monospace"以强制输入框使用等宽字体。
如果提示字符串设置为"no_wrap",输入框将不会在边界处换行,而是改为使区域可滚动。
PropertyHint PROPERTY_HINT_EXPRESSION = 19
提示 String 属性为 Expression。
PropertyHint PROPERTY_HINT_PLACEHOLDER_TEXT = 20
提示 String 属性在为空时应当显示占位文本。提示字符串为所使用的占位文本。
PropertyHint PROPERTY_HINT_COLOR_NO_ALPHA = 21
提示一个 Color 属性在编辑时不能影响其透明度(Color.a 不可编辑)。
PropertyHint PROPERTY_HINT_OBJECT_ID = 22
提示该属性的值是一个被编码为对象 ID 的对象,其类型在提示字符串中指定。被用于调试器。
PropertyHint PROPERTY_HINT_TYPE_STRING = 23
如果属性为 String,则提示该属性代表特定的类型(类)。这样就能使用创建对话框选择类型。该属性中存放的是所选类型,是一个字符串。
如果属性为 Array,则提示编辑器如何显示其中的元素。hint_string 必须使用 ":" 和 "/" 对内嵌的类型进行编码。
如果属性为 Dictionary,则提示编辑器如何显示其中的元素。hint_string 与 Array 相同,使用 ";" 分隔键和值。
# elem_type 数组。
hint_string = "%d:" % [elem_type]
hint_string = "%d/%d:%s" % [elem_type, elem_hint, elem_hint_string]
# elem_type 二维数组(elem_type 数组的数组)。
hint_string = "%d:%d:" % [TYPE_ARRAY, elem_type]
hint_string = "%d:%d/%d:%s" % [TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
# elem_type 三维数组(elem_type 数组的数组的数组)。
hint_string = "%d:%d:%d:" % [TYPE_ARRAY, TYPE_ARRAY, elem_type]
hint_string = "%d:%d:%d/%d:%s" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
// elem_type 数组。
hintString = $"{elemType:D}:";
hintString = $"{elemType:}/{elemHint:D}:{elemHintString}";
// elem_type 二维数组(elem_type 数组的数组)。
hintString = $"{Variant.Type.Array:D}:{elemType:D}:";
hintString = $"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
// elem_type 三维数组(elem_type 数组的数组的数组)。
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:";
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
示例:
hint_string = "%d:" % [TYPE_INT] # 整数数组。
hint_string = "%d/%d:1,10,1" % [TYPE_INT, PROPERTY_HINT_RANGE] # 整数数组(范围为 1 到 10)。
hint_string = "%d/%d:Zero,One,Two" % [TYPE_INT, PROPERTY_HINT_ENUM] # 整数数组(枚举)。
hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # 整数数组(枚举)。
hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # 字符串数组(文件路径)。
hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # 纹理数组。
hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # 浮点数二维数组。
hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # 多行字符串二维数组。
hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # 浮点数二维数组(范围为 -1 到 1)。
hint_string = "%d:%d/%d:Texture2D" % [TYPE_ARRAY, TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # 纹理二维数组。
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1"; // 整数数组(范围为 1 到 10)。
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two"; // 整数数组(枚举)。
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // 整数数组(枚举)。
hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // 字符串数组(文件路径)。
hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // 纹理数组。
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // 浮点数二维数组。
hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // 多行字符串二维数组。
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // 浮点数二维数组(范围为 -1 到 1)。
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // 纹理二维数组。
注意:后缀冒号是必须的,否则无法正确识别内置类型。
PropertyHint PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE = 24
已弃用: This hint is not used by the engine.
PropertyHint PROPERTY_HINT_OBJECT_TOO_BIG = 25
提示对象太大而无法通过调试器发送。
PropertyHint PROPERTY_HINT_NODE_PATH_VALID_TYPES = 26
提示该提示字符串为类型 NodePath 的属性指定有效的节点类型。
PropertyHint PROPERTY_HINT_SAVE_FILE = 27
提示 String 属性是文件的路径。编辑它将显示一个文件对话框,用于选择文件要保存的路径。该对话框可以访问项目的目录。该提示字符串可以是一组带有通配符的筛选器,例如 "*.png,*.jpg"。另见 FileDialog.filters。
PropertyHint PROPERTY_HINT_GLOBAL_SAVE_FILE = 28
提示 String 属性是文件的路径。编辑它将显示一个文件对话框,用于选择文件要保存的路径。该对话框可以访问整个文件系统。该提示字符串可以是一组带有通配符的筛选器,例如 "*.png,*.jpg"。另见 FileDialog.filters。
PropertyHint PROPERTY_HINT_INT_IS_OBJECTID = 29
已弃用: This hint is not used by the engine.
PropertyHint PROPERTY_HINT_INT_IS_POINTER = 30
提示 int 属性是一个指针。用于 GDExtension。
PropertyHint PROPERTY_HINT_ARRAY_TYPE = 31
提示属性为 Array,其中所存储的类型在提示字符串中指定。提示字符串中包含的是数组的类型(例如 "String")。
对存储的类型进行更精细的控制请使用 PROPERTY_HINT_TYPE_STRING 中的提示字符串。
PropertyHint PROPERTY_HINT_DICTIONARY_TYPE = 38
提示属性为 Dictionary,其中所存储的类型在提示字符串中指定。提示字符串中包含的是键和值的类型,由英文分号分隔(例如 "int;String")。
对存储的类型进行更精细的控制请使用 PROPERTY_HINT_TYPE_STRING 中的提示字符串。
PropertyHint PROPERTY_HINT_LOCALE_ID = 32
提示一个字符串属性是一个区域设置代码。编辑它将显示一个用于选择语言和地区的区域设置对话框。
PropertyHint PROPERTY_HINT_LOCALIZABLE_STRING = 33
提示一个字典属性是字符串翻译映射。字典的键是区域设置代码,值是翻译后的字符串。
PropertyHint PROPERTY_HINT_NODE_TYPE = 34
提示属性是 Node 派生类型的实例,可以选择通过提示字符串指定(例如 "Node2D")。编辑它将显示一个用于从场景中选取节点的对话框。
PropertyHint PROPERTY_HINT_HIDE_QUATERNION_EDIT = 35
提示四元数属性应当禁用临时欧拉值编辑器。
PropertyHint PROPERTY_HINT_PASSWORD = 36
提示字符串属性为密码,每一个字符都会被替换为秘密字符。
PropertyHint PROPERTY_HINT_TOOL_BUTTON = 39
一个Callable属性应当被显示为一个可点击的按钮。当按钮被按下,该属性被调用。提示字符串指定了按钮的文本并可以通过"EditorIcons"主题类型指定一个图标。
"Click me!" - 一个按钮,文本为“Click me!”,图标是默认的“Callable”图标。
"Click me!,ColorRect" - 一个按钮,文本为“Click me!”,图标是“ColorRect”图标。
注意:一个可调用对象Callable无法被妥善序列化和保存到文件,所以建议使用PROPERTY_USAGE_EDITOR而不是PROPERTY_USAGE_DEFAULT。
PropertyHint PROPERTY_HINT_ONESHOT = 40
提示一个属性在设置后仍会自动被改变,例如AudioStreamPlayer.playing或GPUParticles3D.emitting。
PropertyHint PROPERTY_HINT_GROUP_ENABLE = 42
提示布尔值属性会启用属性所在分组对应的功能。属性会以复选框的形式在分组标题上显示。仅在分组或子分组中有效。
默认情况下,禁用该属性会隐藏分组中的所有属性。请使用可选的提示字符串 "checkbox_only" 禁用该行为。
PropertyHint PROPERTY_HINT_INPUT_NAME = 43
提示 String 和 StringName 属性为输入动作的名称。允许选择项目设置“输入映射”中的动作名称。提示字符串可以包含两个选项,由英文逗号分隔:
如果包含
"show_builtin"则选项中包含内置输入动作。如果包含
"loose_mode"则启用宽松模式,允许插入任意动作名称,可以是输入映射中不存在的名称。
PropertyHint PROPERTY_HINT_FILE_PATH = 44
与 PROPERTY_HINT_FILE 类似,但是属性以原始路径的形式存储,不使用 UID。这意味着移动文件后引用可能损坏。请尽量使用 PROPERTY_HINT_FILE。
PropertyHint PROPERTY_HINT_MAX = 45
代表 PropertyHint 枚举的大小。
flags PropertyUsageFlags: 🔗
PropertyUsageFlags PROPERTY_USAGE_NONE = 0
该属性不被存储,也不会显示在编辑器中。这是非导出属性的默认值。
PropertyUsageFlags PROPERTY_USAGE_STORAGE = 2
将属性序列化并保存到场景文件中(用于导出属性的默认值)。
PropertyUsageFlags PROPERTY_USAGE_EDITOR = 4
该属性将被显示在 EditorInspector 中(用于导出属性的默认值)。
PropertyUsageFlags PROPERTY_USAGE_INTERNAL = 8
该属性排除在类参考手册之外。
PropertyUsageFlags PROPERTY_USAGE_CHECKABLE = 16
该属性可以在 EditorInspector 中被勾选。
PropertyUsageFlags PROPERTY_USAGE_CHECKED = 32
该属性在 EditorInspector 中已被勾选。
PropertyUsageFlags PROPERTY_USAGE_GROUP = 64
用于在编辑器中将属性编组在一起。请参阅 EditorInspector。
PropertyUsageFlags PROPERTY_USAGE_CATEGORY = 128
在编辑器中用于为属性分类。
PropertyUsageFlags PROPERTY_USAGE_SUBGROUP = 256
用于在子组(一个组下)中将编辑器中的属性编组在一起。请参阅 EditorInspector。
PropertyUsageFlags PROPERTY_USAGE_CLASS_IS_BITFIELD = 512
该属性是一个位字段,即它包含多个被表示为位的标志。
PropertyUsageFlags PROPERTY_USAGE_NO_INSTANCE_STATE = 1024
该属性不在 PackedScene 中保存其状态。
PropertyUsageFlags PROPERTY_USAGE_RESTART_IF_CHANGED = 2048
编辑属性会提示用户重新启动编辑器。
PropertyUsageFlags PROPERTY_USAGE_SCRIPT_VARIABLE = 4096
本属性是一个脚本变量。PROPERTY_USAGE_SCRIPT_VARIABLE可以用来把导出的脚本变量与内建变量(没有这一项使用标识)区分开来。默认情况下,PROPERTY_USAGE_SCRIPT_VARIABLE对脚本中通过重载Object._get_property_list()创建的变量不生效。
PropertyUsageFlags PROPERTY_USAGE_STORE_IF_NULL = 8192
即使 Object 类型的属性值为 null,也会被存储。
PropertyUsageFlags PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED = 16384
如果该属性被修改,则所有检查器字段都将被刷新。
PropertyUsageFlags PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE = 32768
已弃用: This flag is not used by the engine.
PropertyUsageFlags PROPERTY_USAGE_CLASS_IS_ENUM = 65536
该属性是一个枚举类型的变量,即它仅从其关联的枚举中获取被命名的整数常量。
PropertyUsageFlags PROPERTY_USAGE_NIL_IS_VARIANT = 131072
如果属性将 nil 作为默认值,则其类型将为 Variant。
PropertyUsageFlags PROPERTY_USAGE_ARRAY = 262144
该属性是属性数组的元素计数,即一组相关属性列表。使用此方式的属性还需要一个特定的 class_name 字段 ,形式为 label,prefix。该 字段 还可以包含其他用逗号分隔的选项:
page_size=N: 覆盖此数组的 EditorSettings.interface/inspector/max_array_dictionary_items_per_page。add_button_text=text: "添加元素" 按钮显示的文本。static: 元素不能重新排序。const: 不能添加新元素。`` 编号 ``:每个元素旁边将出现一个索引 。
unfoldable: 数组不能折叠。``swap_method=方法名 ``:当两个元素交换位置时将调用的方法。该方法应接受 2 个int参数,这些参数将是被交换元素的索引。
注意,创建一个完整的属性数组需要涉及Object._get_property_list()的样板代码。
PropertyUsageFlags PROPERTY_USAGE_ALWAYS_DUPLICATE = 524288
当创建一个带有 Resource.duplicate() 的 Resource,并且它的标志是在一个 Resource 的属性上设置的副本时候,无论 subresources 为多少,该属性永远都会被创建为副本。
PropertyUsageFlags PROPERTY_USAGE_NEVER_DUPLICATE = 1048576
使用 Resource.duplicate() 复制资源时,如果该资源的某个属性上设有这个标志,则不会对该属性进行复制,无视 subresources 布尔型参数。
PropertyUsageFlags PROPERTY_USAGE_HIGH_END_GFX = 2097152
仅当支持现代渲染器(不包括 Compatibility 渲染方式)时,该属性才会显示在编辑器中。
PropertyUsageFlags PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT = 4194304
NodePath 属性将始终是相对于场景根的。主要用于本地资源。
PropertyUsageFlags PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT = 8388608
在动态创建资源时使用,即 Getter 将始终返回一个不同的实例。ResourceSaver 需要该信息来正确保存这种资源。
PropertyUsageFlags PROPERTY_USAGE_KEYING_INCREMENTS = 16777216
插入该属性的动画关键帧将自动增加该值,从而可以轻松地为一行中的多个值设置关键帧。
PropertyUsageFlags PROPERTY_USAGE_DEFERRED_SET_RESOURCE = 33554432
已弃用: This flag is not used by the engine.
PropertyUsageFlags PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT = 67108864
当该属性为 Resource 且基础对象为 Node 时,则每当该节点是在编辑器中创建的,都会自动创建一个资源实例。
PropertyUsageFlags PROPERTY_USAGE_EDITOR_BASIC_SETTING = 134217728
该属性被视为基本设置,即使禁用高级模式时也会显现。用于项目设置。
PropertyUsageFlags PROPERTY_USAGE_READ_ONLY = 268435456
该属性在 EditorInspector 中只读。
PropertyUsageFlags PROPERTY_USAGE_SECRET = 536870912
具有该标志的导出预设属性包含机密信息,并与导出预设配置的其余部分分开存储。
PropertyUsageFlags PROPERTY_USAGE_DEFAULT = 6
默认用法(存储和编辑器)。
PropertyUsageFlags PROPERTY_USAGE_NO_EDITOR = 2
默认用法,但不在编辑器中显示属性(存储)。
flags MethodFlags: 🔗
MethodFlags METHOD_FLAG_NORMAL = 1
普通方法的标志。
MethodFlags METHOD_FLAG_EDITOR = 2
编辑器方法的标志。
MethodFlags METHOD_FLAG_CONST = 4
常量方法的标志。
MethodFlags METHOD_FLAG_VIRTUAL = 8
虚方法的标志。
MethodFlags METHOD_FLAG_VARARG = 16
具有可变数量参数的方法的标志。
MethodFlags METHOD_FLAG_STATIC = 32
静态方法的标志。
MethodFlags METHOD_FLAG_OBJECT_CORE = 64
内部使用。允许不将核心虚拟方法(例如 Object._notification())转储到 JSON API。
MethodFlags METHOD_FLAG_VIRTUAL_REQUIRED = 128
必选虚方法的标志。GDScript 会为抽象函数设置该标志。
MethodFlags METHOD_FLAGS_DEFAULT = 1
默认方法标志(正常)。
enum Variant.Type: 🔗
Variant.Type TYPE_NIL = 0
变量为 null。
Variant.Type TYPE_BOOL = 1
变量类型为 bool。
Variant.Type TYPE_INT = 2
变量类型为 int。
Variant.Type TYPE_FLOAT = 3
变量的类型为 float。
Variant.Type TYPE_STRING = 4
变量类型为 String。
Variant.Type TYPE_VECTOR2 = 5
变量类型为 Vector2。
Variant.Type TYPE_VECTOR2I = 6
变量类型为 Vector2i。
Variant.Type TYPE_RECT2 = 7
变量类型为 Rect2。
Variant.Type TYPE_RECT2I = 8
变量类型为 Rect2i。
Variant.Type TYPE_VECTOR3 = 9
变量类型为 Vector3。
Variant.Type TYPE_VECTOR3I = 10
变量类型为 Vector3i。
Variant.Type TYPE_TRANSFORM2D = 11
变量类型为 Transform2D。
Variant.Type TYPE_VECTOR4 = 12
变量类型为 Vector4。
Variant.Type TYPE_VECTOR4I = 13
变量类型为 Vector4i。
Variant.Type TYPE_PLANE = 14
变量类型为 Plane。
Variant.Type TYPE_QUATERNION = 15
变量类型为 Quaternion。
Variant.Type TYPE_AABB = 16
变量类型为 AABB。
Variant.Type TYPE_BASIS = 17
变量类型为 Basis。
Variant.Type TYPE_TRANSFORM3D = 18
变量类型为 Transform3D。
Variant.Type TYPE_PROJECTION = 19
变量类型为 Projection。
Variant.Type TYPE_COLOR = 20
变量类型为 Color。
Variant.Type TYPE_STRING_NAME = 21
变量类型为 StringName。
Variant.Type TYPE_NODE_PATH = 22
变量类型为 NodePath。
Variant.Type TYPE_RID = 23
变量类型为 RID。
Variant.Type TYPE_OBJECT = 24
变量类型为 Object。
Variant.Type TYPE_CALLABLE = 25
变量类型为 Callable。
Variant.Type TYPE_SIGNAL = 26
变量类型为 Signal。
Variant.Type TYPE_DICTIONARY = 27
变量类型为 Dictionary。
Variant.Type TYPE_ARRAY = 28
变量类型为 Array。
Variant.Type TYPE_PACKED_BYTE_ARRAY = 29
变量类型为 PackedByteArray。
Variant.Type TYPE_PACKED_INT32_ARRAY = 30
变量类型为 PackedInt32Array。
Variant.Type TYPE_PACKED_INT64_ARRAY = 31
变量类型为 PackedInt64Array。
Variant.Type TYPE_PACKED_FLOAT32_ARRAY = 32
变量类型为 PackedFloat32Array。
Variant.Type TYPE_PACKED_FLOAT64_ARRAY = 33
变量类型为 PackedFloat64Array。
Variant.Type TYPE_PACKED_STRING_ARRAY = 34
变量类型为 PackedStringArray。
Variant.Type TYPE_PACKED_VECTOR2_ARRAY = 35
变量类型为 PackedVector2Array。
Variant.Type TYPE_PACKED_VECTOR3_ARRAY = 36
变量类型为 PackedVector3Array。
Variant.Type TYPE_PACKED_COLOR_ARRAY = 37
变量类型为 PackedColorArray。
Variant.Type TYPE_PACKED_VECTOR4_ARRAY = 38
变量类型为 PackedVector4Array。
Variant.Type TYPE_MAX = 39
代表 Variant.Type 枚举的大小。
enum Variant.Operator: 🔗
Variant.Operator OP_EQUAL = 0
相等运算符(==)。
Variant.Operator OP_NOT_EQUAL = 1
不等运算符(!=)。
Variant.Operator OP_LESS = 2
小于运算符(<)。
Variant.Operator OP_LESS_EQUAL = 3
小于等于运算符(<=)。
Variant.Operator OP_GREATER = 4
大于运算符(>)。
Variant.Operator OP_GREATER_EQUAL = 5
大于等于运算符(>=)。
Variant.Operator OP_ADD = 6
加法运算符(+)。
Variant.Operator OP_SUBTRACT = 7
减法运算符(-)。
Variant.Operator OP_MULTIPLY = 8
乘法运算符(*)。
Variant.Operator OP_DIVIDE = 9
除法运算符(/)。
Variant.Operator OP_NEGATE = 10
一元减号运算符(-)。
Variant.Operator OP_POSITIVE = 11
一元加号运算符(+)。
Variant.Operator OP_MODULE = 12
余数/取模运算符(%)。
Variant.Operator OP_POWER = 13
幂运算符(**)。
Variant.Operator OP_SHIFT_LEFT = 14
左移运算符(<<)。
Variant.Operator OP_SHIFT_RIGHT = 15
右移运算符(>>)。
Variant.Operator OP_BIT_AND = 16
按位与运算符(&)。
Variant.Operator OP_BIT_OR = 17
按位或运算符(|)。
Variant.Operator OP_BIT_XOR = 18
按位异或运算符(^)。
Variant.Operator OP_BIT_NEGATE = 19
按位非运算符(~)。
Variant.Operator OP_AND = 20
逻辑与运算符(and 或 &&)。
Variant.Operator OP_OR = 21
逻辑或运算符(or 或 ||)。
Variant.Operator OP_XOR = 22
逻辑异或运算符(未在 GDScript 中实现)。
Variant.Operator OP_NOT = 23
逻辑非运算符(not 或 !)。
Variant.Operator OP_IN = 24
逻辑 IN 运算符(in)。
Variant.Operator OP_MAX = 25
代表 Variant.Operator 枚举的大小。
属性说明
AudioServer AudioServer 🔗
AudioServer 单例。
CameraServer CameraServer 🔗
CameraServer 单例。
ClassDB 单例。
DisplayServer DisplayServer 🔗
DisplayServer 单例。
EditorInterface EditorInterface 🔗
EditorInterface 单例。
注意:仅在编辑器构建中可用。
Engine 单例。
EngineDebugger EngineDebugger 🔗
EngineDebugger 单例。
GDExtensionManager GDExtensionManager 🔗
Geometry2D Geometry2D 🔗
Geometry2D 单例。
Geometry3D Geometry3D 🔗
Geometry3D 单例。
IP 单例。
Input 单例。
InputMap 单例。
JavaClassWrapper JavaClassWrapper 🔗
JavaClassWrapper 单例。
注意:仅在 Android 上实现。
JavaScriptBridge JavaScriptBridge 🔗
JavaScriptBridge 单例。
注意:仅在 Web 平台上实现。
Marshalls 单例。
NativeMenu 单例。
注意:仅在 macOS 上实现。
OS 单例。
Performance Performance 🔗
Performance 单例。
PhysicsServer2D PhysicsServer2D 🔗
PhysicsServer2D 单例。
PhysicsServer2DManager PhysicsServer2DManager 🔗
PhysicsServer3D PhysicsServer3D 🔗
PhysicsServer3D 单例。
PhysicsServer3DManager PhysicsServer3DManager 🔗
ProjectSettings ProjectSettings 🔗
ProjectSettings 单例。
RenderingServer RenderingServer 🔗
RenderingServer 单例。
ResourceLoader ResourceLoader 🔗
ResourceLoader 单例。
ResourceSaver ResourceSaver 🔗
ResourceSaver 单例。
ResourceUID ResourceUID 🔗
ResourceUID 单例。
TextServerManager TextServerManager 🔗
ThemeDB 单例。
Time 单例。
TranslationServer TranslationServer 🔗
WorkerThreadPool WorkerThreadPool 🔗
WorkerThreadPool 单例。
XRServer 单例。
方法说明
返回一个 Variant 类型参数 x 的绝对值(即非负值)。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i 。
var a = abs(-1)
# a=1
var b = abs(-1.2)
# b=1.2
var c = abs(Vector2(-3.5, -4))
# c=(3.5, 4)
var d = abs(Vector2i(-5, -6))
# d=(5, 6)
var e = abs(Vector3(-7, 8.5, -3.8))
# e=(7, 8.5, 3.8)
var f = abs(Vector3i(-7, -8, -9))
# f=(7, 8, 9)
注意:为了更好的类型安全,请使用 absf()、absi()、Vector2.abs()、Vector2i.abs()、Vector3.abs()、Vector3i.abs()、Vector4.abs() 或 Vector4i.abs()。
返回浮点参数 x 的绝对值(即正值)。
# a=1.2
var a = absf(-1.2)
返回整数参数 x 的绝对值(即正值)。
# a=1
var a = absi(-1)
返回 x 的反余弦,单位为弧度。用来获取余弦 x 的角度。x 会被钳制在 -1.0 和 1.0(包括)之间,因此 acos() 不会返回 @GDScript.NAN。
# 如果用 rad_to_deg(c) 转换,c为0.523599或30度
var c = acos(0.866025)
返回 x 的反双曲余弦值,返回值为弧度。使用它来获取在双曲空间中,如果 x 大于或等于 1,角的余弦的角度。对于 x 小于 1 的值,将返回 0,以防止 acosh() 返回 @GDScript.NAN。
var a = acosh(2) # 返回 1.31695789692482
cosh(a) # 返回 2
var b = acosh(-1) # 返回 0
float angle_difference(from: float, to: float) 🔗
返回两个角度之间的差(单位为弧度),范围为 [-PI, +PI] 。当 from 和 to 相反时,如果 from 小于 to,则返回 -PI ,否则返回 PI 。
返回 x 的反正弦值,单位为弧度。用来获取正弦 x 的角度。x 会被钳制在 -1.0 和 1.0(包括)之间,因此 asin() 不会返回 @GDScript.NAN。
# 如果用 rad_to_deg(s) 转换,s为0.523599或30度
var s = asin(0.5)
返回 x 的反双曲正弦值,返回值为弧度。使用它来获取在双曲空间中,角的正弦角度。
var a = asinh(0.9) # 返回 0.8088669356527824
sinh(a) # 返回 0.9
返回 x 的反正切值,单位为弧度。在三角函数中用它来得到一个角上切线的角度。
该方法无法确定角度应该落在哪个象限。如果你同时拥有 y 和 x,请参见 atan2()。
var a = atan(0.5) # a=0.463648
如果 x 在 -PI/2 和 PI/2(包括)之间,atan(tan(x)) 等于 x。
float atan2(y: float, x: float) 🔗
返回 y/x 的反正切值,单位为弧度。用来获得正切值为 y/x 的角度。为了计算该值,该方法考虑了两个参数的符号,以确定象限。
重要提示:按照惯例,Y 坐标在前。
var a = atan2(0, -1) # a = 3.141593
返回 x 的反双曲正切值,返回值为弧度。如果 x 在 -1 和 1 之间(不包括 -1 和 1),则使用它从双曲空间中的角度的正切值获取角度。
在数学中,只有在实数集中,-1 < x < 1 的情况下,双曲反正切才有意义。因此,为了预防 atanh() 返回 @GDScript.NAN,对于 x 等于或小于 -1 的值,返回负的 @GDScript.NAN;对于 x等于或大于 1 的值,返回正的 @GDScript.INF。
var a = atanh(0.9) # 返回 1.47221948958322
tanh(a) # 返回 0.9
var b = atanh(-2) # 返回 -inf
tanh(b) # 返回 -1
float bezier_derivative(start: float, control_1: float, control_2: float, end: float, t: float) 🔗
返回由给定的 control_1、control_2 和 end 点定义的一维贝塞尔曲线上 t 处的导数。
float bezier_interpolate(start: float, control_1: float, control_2: float, end: float, t: float) 🔗
返回由给定的 control_1、control_2 和 end 点定义的一维贝塞尔曲线上位于给定 t 的点。
Variant bytes_to_var(bytes: PackedByteArray) 🔗
将字节数组解码回 Variant 值,无法解码对象。
注意:如果需要对象反序列化,请参见 bytes_to_var_with_objects()。
Variant bytes_to_var_with_objects(bytes: PackedByteArray) 🔗
将字节数组解码回 Variant 值。允许解码对象。
警告:反序列化的对象可能包含执行的代码。如果序列化对象的来源不受信任,则不要使用此选项,以避免潜在的安全威胁(远程执行代码)。
向上舍入 x(朝正无穷大方向),返回不小于 x 的最小整数。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
var i = ceil(1.45) # i 为 2.0
i = ceil(1.001) # i 为 2.0
注意:为了更好的类型安全,使用 ceilf()、ceili()、Vector2.ceil()、Vector3.ceil() 或 Vector4.ceil()。
向上舍入 x(朝正无穷大),返回不小于 x 的最小整数。
向上舍入 x(朝正无穷大),返回不小于 x 的最小整数。
Variant clamp(value: Variant, min: Variant, max: Variant) 🔗
钳制 value,返回不小于 min 且不大于 max 的 Variant。任何能够用小于和大于运算符进行比较的值都能工作。
var a = clamp(-10, -1, 5)
# a 是 -1
var b = clamp(8.1, 0.9, 5.5)
# b 是 5.5
注意:为了更好的类型安全,请使用 clampf()、clampi()、Vector2.clamp()、Vector2i.clamp()、Vector3.clamp()、Vector3i.clamp()、Vector4.clamp()、Vector4i.clamp() 或 Color.clamp()(该方法当前不受支持)。
注意:当在向量上使用该函数时,它不会执行逐分量钳制,并且如果 value < min 则结果为 min,如果 value > max 则为 max。要执行逐分量钳制,请使用上面列出的方法。
float clampf(value: float, min: float, max: float) 🔗
钳制 value,返回不小于 min 且不大于 max 的 float。
var speed = 42.1
var a = clampf(speed, 1.0, 20.5) # a 是 20.5
speed = -10.0
var b = clampf(speed, -1.0, 1.0) # b 是 -1.0
int clampi(value: int, min: int, max: int) 🔗
钳制 value,返回不小于 min 且不大于 max 的 int。
var speed = 42
var a = clampi(speed, 1, 20) # a 是 20
speed = -10
var b = clampi(speed, -1, 1) # b 是 -1
返回弧度角为 angle_rad 的余弦值。
cos(PI * 2) # 返回 1.0
cos(PI) # 返回 -1.0
cos(deg_to_rad(90)) # 返回 0.0
返回弧度角 x 的双曲余弦值。
print(cosh(1)) # 打印 1.543081
float cubic_interpolate(from: float, to: float, pre: float, post: float, weight: float) 🔗
根据 weight 定义的系数,以及 pre 和 post 值,在两个值之间进行三次插值。
float cubic_interpolate_angle(from: float, to: float, pre: float, post: float, weight: float) 🔗
根据 weight 定义的系数,以及 pre 和 post 值,在两个旋转值之间的最短路径进行三次插值 。另见 lerp_angle()。
float cubic_interpolate_angle_in_time(from: float, to: float, pre: float, post: float, weight: float, to_t: float, pre_t: float, post_t: float) 🔗
根据 weight 定义的系数,以及 pre 和 post 值,在两个旋转值之间的最短路径进行三次插值。另见 lerp_angle()。
它可以根据时间值执行比 cubic_interpolate() 更平滑的插值。
float cubic_interpolate_in_time(from: float, to: float, pre: float, post: float, weight: float, to_t: float, pre_t: float, post_t: float) 🔗
根据 weight 定义的系数,以及 pre 和 post 值,在两个值之间进行三次插值。
它可以根据时间值执行比 cubic_interpolate() 更平滑的插值。
float db_to_linear(db: float) 🔗
将分贝值转换为线性能量(音频)值。
float deg_to_rad(deg: float) 🔗
将角度值转换为弧度值。
var r = deg_to_rad(180) # r 是 3.141593
float ease(x: float, curve: float) 🔗
基于用 curve 定义的缓动函数返回 x “缓动后”的值,该缓动函数是基于指数的缓动。curve 可以是任意浮点数,具体数值会导致以下行为:
- 低于 -1.0(开区间):缓入缓出
- -1.0:线性
- 在 -1.0 和 0.0 之间(开区间):缓出缓入
- 0.0:恒定
- 在 0.0 到 1.0 之间(开区间):缓出
- 1.0:线性
- 大于 1.0(开区间):缓入
另见 smoothstep()。如果你需要执行更高级的过渡,请使用 Tween.interpolate_value()。
String error_string(error: int) 🔗
为给定的 Error 代码返回一个人类可读的名称。
print(OK) # 输出 0
print(error_string(OK)) # 输出“OK”
print(error_string(ERR_BUSY)) # 输出“Busy”
print(error_string(ERR_OUT_OF_MEMORY)) # 输出“Out of memory”
自然指数函数。计算数学常数 e 的 x 次方并返回它。
e 的近似值为 2.71828,可以使用 exp(1) 获得。
求其他底数的指数应使用 pow() 方法。
var a = exp(2) # 大约是 7.39
向下舍入 x(朝负无穷大),返回不大于 x 的最大整数。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
var a = floor(2.99) # a 为 2.0
a = floor(-2.99) # a 为 -3.0
注意:为了更好的类型安全,请使用 floorf()、floori()、Vector2.floor()、Vector3.floor() 或 Vector4.floor()。
将 x 向下舍入(向负无穷大),返回不超过 x 的最大整数。
一个类型安全的 floor() 版本,返回一个 float。
将 x 向下舍入(向负无穷大),返回不超过 x 的最大整数。
注意:这个函数与 int(x) 不 一样,后者是向 0 取整。
float fmod(x: float, y: float) 🔗
返回 x 除以 y 的浮点型余数,符号与 x一致。
var remainder = fmod(7, 5.5) # remainder 是 1.5
对于整数取余运算,请使用 % 运算符。
float fposmod(x: float, y: float) 🔗
返回 x 除以 y 的浮点模数,对正负数进行一致的循环。
print(" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))")
for i in 7:
var x = i * 0.5 - 1.5
print("%4.1f %4.1f | %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])
输出:
(x) (fmod(x, 1.5)) (fposmod(x, 1.5))
-1.5 -0.0 | 0.0
-1.0 -1.0 | 0.5
-0.5 -0.5 | 1.0
0.0 0.0 | 0.0
0.5 0.5 | 0.5
1.0 1.0 | 1.0
1.5 0.0 | 0.0
返回传入的 variable 的整数哈希值。
print(hash("a")) # 输出 177670
GD.Print(GD.Hash("a")); // 输出 177670
Object instance_from_id(instance_id: int) 🔗
返回实例 ID instance_id 所对应的 Object。所有对象都有唯一实例 ID。另见 Object.get_instance_id()。
var drink = "water"
func _ready():
var id = get_instance_id()
var instance = instance_from_id(id)
print(instance.drink) # 输出“water”
public partial class MyNode : Node
{
public string Drink { get; set; } = "water";
public override void _Ready()
{
ulong id = GetInstanceId();
var instance = (MyNode)InstanceFromId(Id);
GD.Print(instance.Drink); // 输出“water”
}
}
float inverse_lerp(from: float, to: float, weight: float) 🔗
返回插值或外推的因子。范围用 from 和 to指定,插值后的值由 weight 指定。如果 weight 在 from 和 to 之间(包含),那么返回的值在 0.0 和 1.0 之间。如果 weight 在该范围之外,则返回的是外推因子(返回值小于 0.0 或大于 1.0)。如果不希望这样,请对 inverse_lerp() 的结果使用 clamp()。
# 下面的 `lerp()` 调用时的插值比例是 0.75。
var middle = lerp(20, 30, 0.75)
# middle 现在是 27.5。
# 现在,我们假装忘记了原来的比例,想要找到是多少。
var ratio = inverse_lerp(20, 30, 27.5)
# ratio 现在是 0.75。
另见 lerp(),它执行本操作的逆操作;以及 remap(),将一系列连续的值映射到另一个值。
bool is_equal_approx(a: float, b: float) 🔗
如果 a 和 b 彼此近似相等,则返回 true。
这里,“近似相等”意味着 a 和 b 在彼此的一个小的内部 epsilon 内,该 epsilon 与数字的大小成比例。
相同符号的无穷大值被认为是相等的。
返回 x 是否为有限值,即不是 @GDScript.NAN、正无穷大或负无穷大。另见 is_inf() 和 is_nan()。
如果 x 是正无穷大或负无穷大,则返回 true 。另见 is_finite() 和 is_nan()。
bool is_instance_id_valid(id: int) 🔗
如果与 id 对应的 Object 是有效的对象(例如没有从内存中删除),则返回 true 。所有对象都有唯一的实例 ID。
bool is_instance_valid(instance: Variant) 🔗
如果 instance 是有效的 Object(例如,没有从内存中删除),则返回 true 。
如果 x 为 NaN 值(“Not a Number”,不是数字,即无效值),则返回 true。存在的该方法必要性在于 @GDScript.NAN 与自身不相等,即无法使用 x == NAN 来判断是否为 NaN。
bool is_same(a: Variant, b: Variant) 🔗
当 a 和 b 为值类型时,如果他们相同,那么返回 true。当 a 和 b 为引用类型时,如果它们的引用对象相同,那么返回 true。
# Vector2 是值类型
var vec2_a = Vector2(0, 0)
var vec2_b = Vector2(0, 0)
var vec2_c = Vector2(1, 1)
is_same(vec2_a, vec2_a) # true
is_same(vec2_a, vec2_b) # true
is_same(vec2_a, vec2_c) # false
# Array 是引用类型
var arr_a = []
var arr_b = []
is_same(arr_a, arr_a) # true
is_same(arr_a, arr_b) # false
值类型的 Variant 有:null、bool、int、float、String、StringName、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i、Rect2、Rect2i、Transform2D、Transform3D、Plane、Quaternion、AABB、Basis、Projection、Color、NodePath、RID、Callable 和 Signal。
引用类型的 Variant 有:Object、Dictionary、Array、PackedByteArray、PackedInt32Array、PackedInt64Array、PackedFloat32Array、PackedFloat64Array、PackedStringArray、PackedVector2Array、PackedVector3Array、PackedVector4Array 和 PackedColorArray。
bool is_zero_approx(x: float) 🔗
如果 x 为零或几乎为零,则返回 true。比较是使用具有小内部 epsilon 的公差计算的。
该函数比使用一个值为零的 is_equal_approx() 更快。
Variant lerp(from: Variant, to: Variant, weight: Variant) 🔗
通过 weight 中定义的因子在两个值之间进行线性插值。要执行插值,weight 应介于 0.0 和 1.0 之间(包含)。但是,超出此范围的值也是允许的,并可用于执行外推。如果不需要,请在使用 clampf() 限制 weight。
from 和 to 必须是同一类型。支持的类型:int、float、Vector2、Vector3、Vector4、Color、Quaternion、Basis、Transform2D、Transform3D。
lerp(0, 4, 0.75) # 返回 3.0
另见执行本操作的逆操作的 inverse_lerp()。要使用 lerp() 执行缓动插值,请将其与 ease() 或 smoothstep() 结合使用。另见 remap(),可将一系列连续的值映射到另一个值。
注意:为了更好的类型安全,请使用 lerpf()、Vector2.lerp()、Vector3.lerp()、Vector4.lerp()、Color.lerp()、Quaternion.slerp()、Basis.slerp()、Transform2D.interpolate_with() 或 Transform3D.interpolate_with()。
float lerp_angle(from: float, to: float, weight: float) 🔗
通过 0.0 和 1.0 之间的 weight 值,在两个角度(以弧度为单位)之间进行线性插值。
类似于 lerp(),但当角度环绕 @GDScript.TAU 时会正确插值。要使用 lerp_angle() 执行缓动插值,请将其与 ease() 或 smoothstep() 结合使用。
extends Sprite
var elapsed = 0.0
func _process(delta):
var min_angle = deg_to_rad(0.0)
var max_angle = deg_to_rad(90.0)
rotation = lerp_angle(min_angle, max_angle, elapsed)
elapsed += delta
注意:该函数通过 from 和 to 之间的最短路径进行插值。然而,当这两个角度相距大致 PI + k * TAU 其中 k 为任意整数时,由于浮点数精度误差的缘故,要对插值的方向进行判断是很难的。例如,lerp_angle(0, PI, weight) 会逆时针插值,而 lerp_angle(0, PI + 5 * TAU, weight) 则会顺时针插值。
float lerpf(from: float, to: float, weight: float) 🔗
通过 weight 中定义的因子在两个值之间进行线性插值。要执行插值,weight 应介于 0.0 和 1.0 之间(包含)。但是,超出此范围的值是允许的,并可用于执行 外推。如果不需要,请对此函数的结果使用 clampf()。
lerpf(0, 4, 0.75) # 返回 3.0
另见执行本操作的逆运算的 inverse_lerp()。要使用 lerp() 执行缓动插值,请将其与 ease() 或 smoothstep() 结合使用。
float linear_to_db(lin: float) 🔗
从线性能量转换为分贝(音频)。由于音量通常不是线性的,可以用于实现符合预期的音量滑块。
示例:通过 Slider 节点在 0.0 到 1.0 的范围内修改 Master 总线的音量:
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db($Slider.value))
返回 x 的自然对数(底数为 [i]e[/i],e 约为 2.71828)。这是持续增长到一定程度所需的时间。
注意:这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 10。要使用底数为 10 的对数,请使用 log(x) / log(10)。
log(10) # 返回 2.302585
注意:0 的对数返回 -inf,负值返回 -nan。
返回给定数值中的最大值。该函数可以接受任意数量的参数。
max(1, 7, 3, -6, 5) # 返回 7
注意:对向量使用时不会针对分量求最大值,选取最大值时只会使用 x < y 进行比较。要求分量中的最大值,请使用 Vector2.min()、Vector2i.min()、Vector3.min()、Vector3i.min()、Vector4.min()、Vector4i.min()。
float maxf(a: float, b: float) 🔗
返回两个 float 值中的最大值。
maxf(3.6, 24) # 返回 24.0
maxf(-3.99, -4) # 返回 -3.99
返回两个 int 值中的最大值。
maxi(1, 2) # 返回 2
maxi(-3, -4) # 返回 -3
返回给定数值中的最小值。该函数可以接受任意数量的参数。
min(1, 7, 3, -6, 5) # 返回 -6
注意:对向量使用时不会针对分量求最小值,选取最小值时只会使用 x < y 进行比较。要求分量中的最小值,请使用 Vector2.min()、Vector2i.min()、Vector3.min()、Vector3i.min()、Vector4.min()、Vector4i.min()。
float minf(a: float, b: float) 🔗
返回两个 float 值中的最小值。
minf(3.6, 24) # 返回 3.6
minf(-3.99, -4) # 返回 -4.0
返回两个 int 值中的最小值。
mini(1, 2) # 返回 1
mini(-3, -4) # 返回 -4
float move_toward(from: float, to: float, delta: float) 🔗
将 from 向 to 移动,移动的长度是 delta。不会超过 to。
使用负的 delta 值则向远离的方向移动。
move_toward(5, 10, 4) # Returns 9
move_toward(10, 5, 4) # Returns 6
move_toward(5, 10, 9) # Returns 10
move_toward(10, 5, -1.5) # Returns 11.5
返回大于等于 value 的最小的 2 的幂。
nearest_po2(3) # 返回 4
nearest_po2(4) # 返回 4
nearest_po2(5) # 返回 8
nearest_po2(0) # 返回 0(可能出乎意料)
nearest_po2(-1) # 返回 0(可能出乎意料)
警告:由于其实现方式,该函数会对小于等于 0 的值返回 0 而不是 1,例外是 value 为最小的负 64 位整数(-9223372036854775808)时,会将 value 原样返回。
float pingpong(value: float, length: float) 🔗
将 value 包裹在 0 和 length 之间。如果达到限制,函数返回的下一个值将减少到 0 侧或增加到 length 侧(像三角波)。如果 length 小于零,则变为正数。
pingpong(-3.0, 3.0) # 返回 3.0
pingpong(-2.0, 3.0) # 返回 2.0
pingpong(-1.0, 3.0) # 返回 1.0
pingpong(0.0, 3.0) # 返回 0.0
pingpong(1.0, 3.0) # 返回 1.0
pingpong(2.0, 3.0) # 返回 2.0
pingpong(3.0, 3.0) # 返回 3.0
pingpong(4.0, 3.0) # 返回 2.0
pingpong(5.0, 3.0) # 返回 1.0
pingpong(6.0, 3.0) # 返回 0.0
返回 x 除以 y 的整数模数,对正负数进行一致的循环。
print("#(i) (i % 3) (posmod(i, 3))")
for i in range(-3, 4):
print("%2d %2d | %2d" % [i, i % 3, posmod(i, 3)])
结果:
(i) (i % 3) (posmod(i, 3))
-3 0 | 0
-2 -2 | 1
-1 -1 | 2
0 0 | 0
1 1 | 1
2 2 | 2
3 0 | 0
float pow(base: float, exp: float) 🔗
返回 base 的 exp 次幂的结果。
在 GDScript 中,这相当于 ** 运算符。
pow(2, 5) # 返回 32.0
pow(4, 1.5) # 返回 8.0
void print(...) vararg 🔗
以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制台。
var a = [1, 2, 3]
print("a", "b", a) # 输出“ab[1, 2, 3]”
Godot.Collections.Array a = [1, 2, 3];
GD.Print("a", "b", a); // 输出“ab[1, 2, 3]”
注意:请考虑使用 push_error() 和 push_warning() 来打印错误和警告消息,而不是 print() 或 print_rich()。这将它们与用于调试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。另见 Engine.print_to_stdout 和 ProjectSettings.application/run/disable_stdout。
void print_rich(...) vararg 🔗
以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制台。
支持以下 BBCode 标签: b、i、u、s、indent、code、url、center、right、color、bgcolor、fgcolor。
URL 标签仅支持在 URL 标签中包含 URL,不支持使用不同标题的 URL。
当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显示。对 ANSI 转义码的支持可能因终端仿真器而异,尤其是斜体和删除线。在标准输出中,code 会使用较弱的文本表示,但字体不变。不支持的标签在标准输出中会原样保留。
print_rich("[color=green][b]Hello world![/b][/color]") # 输出“Hello world!”,使用绿色的粗体。
GD.PrintRich("[color=green][b]Hello world![/b][/color]"); // 输出“Hello world!”,使用绿色的粗体。
注意:请考虑使用 push_error() 和 push_warning() 来打印错误和警告消息,而不是 print() 或 print_rich()。这将它们与用于调试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。
注意:在编辑器中显示的输出支持可点击的 [url=address]文本[/url] 标签。点击时, [url] 标签的 address 值由 OS.shell_open() 处理。
void print_verbose(...) vararg 🔗
如果启用了详细模式(OS.is_stdout_verbose() 返回 true),则尽可能以最佳方式将一个或多个任意类型的参数转换为字符串,并将它们打印到控制台。
void printerr(...) vararg 🔗
以尽可能最佳的方式将一个或多个参数作为字符串输出到标准错误行。
printerr("prints to stderr")
GD.PrintErr("prints to stderr");
void printraw(...) vararg 🔗
以尽可能最佳的方式将一个或多个参数作为字符串输出到操作系统终端。与 print() 不同的是,最后不会自动添加换行符。
注意:操作系统终端与编辑器的“输出”面板不同。从终端运行 Godot 时可以看到发送至操作系统终端的输出。在 Windows 上,需要用到 console.exe 可执行文件。
# 输出“ABC”到终端
printraw("A")
printraw("B")
printraw("C")
// 输出“ABC”到终端
GD.PrintRaw("A");
GD.PrintRaw("B");
GD.PrintRaw("C");
void prints(...) vararg 🔗
将一个或多个参数打印到控制台,每个参数之间有一个空格。
prints("A", "B", "C") # 输出“A B C”
GD.PrintS("A", "B", "C"); // 输出“A B C”
void printt(...) vararg 🔗
将一个或多个参数打印到控制台,每个参数之间有一个制表符。
printt("A", "B", "C") # 输出“A B C”
GD.PrintT("A", "B", "C"); // 输出“A B C”
void push_error(...) vararg 🔗
将错误消息推送到 Godot 的内置调试器和操作系统终端。
push_error("test error") # 向调试器和终端打印“test error”作为错误。
GD.PushError("test error"); // 向调试器和终端打印“test error”作为错误。
注意:该函数不会暂停项目执行。要在调试版本中打印错误消息并暂停项目执行,请改用 assert(false, "test error")。
void push_warning(...) vararg 🔗
将警告消息推送到 Godot 的内置调试器和操作系统终端。
push_warning("test warning") # 以警告的形式向调试器和终端输出“test warning”。
GD.PushWarning("test warning"); // 以警告的形式向调试器和终端输出“test warning”。
float rad_to_deg(rad: float) 🔗
将以弧度表示的角度转换为度。
rad_to_deg(0.523599) # 返回 30
rad_to_deg(PI) # 返回 180
rad_to_deg(PI * 2) # 返回 360
PackedInt64Array rand_from_seed(seed: int) 🔗
给定一个 seed,返回一个大小为 2 的 PackedInt64Array,其中第一个元素是随机化的 int 值,第二个元素与 seed 相同。传入相同的 seed 会一致地返回相同的数组。
注意:这里的“种子”是指伪随机数发生器的内部状态,目前实现为一个 64 位整数。
var a = rand_from_seed(4)
print(a[0]) # 输出 2879024997
print(a[1]) # 输出 4
返回 0.0 和 1.0(包含)之间的随机浮点值。
randf() # 返回示例 0.375671
GD.Randf(); // 返回示例 0.375671
float randf_range(from: float, to: float) 🔗
返回 from 和 to(包含)之间的随机浮点值。
randf_range(0, 20.5) # 返回示例 7.45315
randf_range(-10, 10) # 返回示例 -3.844535
GD.RandRange(0.0, 20.5); // 返回示例 7.45315
GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535
float randfn(mean: float, deviation: float) 🔗
返回一个正态分布的伪随机数,该正态分布具有指定 mean 和标准 deviation。这也被称为高斯分布。
注意:该方法使用 Box-Muller 变换算法。
返回一个随机的无符号 32 位整数。使用余数获得区间 [0, N - 1] (其中 N 小于 2^32)的随机值。
randi() # 返回介于 0 到 2^32 - 1 之间的随机整数
randi() % 20 # 返回介于 0 到 19之间的随机整数
randi() % 100 # 返回介于 0 到 99 之间的随机整数
randi() % 100 + 1 # 返回介于 1 到 100 之间的随机整数
GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的随机整数
GD.Randi() % 20; // 返回介于 0 到 19之间的随机整数
GD.Randi() % 100; // 返回介于 0 到 99 之间的随机整数
GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的随机整数
int randi_range(from: int, to: int) 🔗
返回介于 from 和 to(包含)之间的一个随机有符号 32 位整数。如果 to 小于 from,则它们将被交换。
randi_range(0, 1) # 返回 0 或 1
randi_range(-10, 1000) # 返回介于 -10 和 1000 之间的随机整数
GD.RandRange(0, 1); // 返回 0 或 1
GD.RandRange(-10, 1000); // 返回介于 -10 和 1000 之间的随机整数
void randomize() 🔗
随机化随机数发生器的种子(或内部状态)。目前的实现使用一个基于设备时间的数字。
注意:该函数在项目运行时自动被调用。如果需要修复种子以获得一致、可重现的结果,请使用 seed() 来初始化随机数生成器。
float remap(value: float, istart: float, istop: float, ostart: float, ostop: float) 🔗
将 value 从范围 [istart, istop] 映射到 [ostart, ostop]。另见 lerp() 和 inverse_lerp()。如果 value 在 [istart, istop] 之外,那么结果值也将在 [ostart, ostop] 之外。如果不希望这样,请对该函数的结果使用 clamp()。
remap(75, 0, 100, -1, 1) # 返回 0.5
对于需要多个范围的复杂用例,请考虑改用 Curve 或 Gradient。
注意:如果 istart == istop,则返回值未定义(很可能是 NaN、INF 或 -INF)。
分配一个唯一 ID,实现方可以用它来构造 RID。主要由原生扩展使用,用于实现服务器。
RID rid_from_int64(base: int) 🔗
从 base 创建一个 RID。主要由原生扩展使用,用于构建服务器。
float rotate_toward(from: float, to: float, delta: float) 🔗
将 from 朝 to 旋转,旋转的量为 delta。不会越过 to。
与 move_toward() 类似,但是能够让夹角正确绕过 @GDScript.TAU。
如果 delta 为负,则该函数会进行远离 to 的旋转,朝向相反的角度,但不会越过该角度。
将 x 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
round(2.4) # 返回 2
round(2.5) # 返回 3
round(2.6) # 返回 3
注意:为了更好的类型安全,使用 roundf()、roundi()、Vector2.round()、Vector3.round() 或 Vector4.round()。
将 x 舍入到最接近的整数,中间情况远离 0 舍入。
将 x 舍入到最接近的整数,中间情况远离 0 舍入。
将随机数生成器的种子设置为 base。手动设置种子可以确保大多数随机函数的结果一致、可重复。
var my_seed = "Godot Rocks".hash()
seed(my_seed)
var a = randf() + randi()
seed(my_seed)
var b = randf() + randi()
# a 和 b 现在是一样的
ulong mySeed = (ulong)GD.Hash("Godot Rocks");
GD.Seed(mySeed);
var a = GD.Randf() + GD.Randi();
GD.Seed(mySeed);
var b = GD.Randf() + GD.Randi();
// a 和 b 现在是一样的
返回与 x 相同类型的 Variant,负值返回 -1、正值返回 1,零则返回 0。如果是 nan 则返回 0。
支持的类型有:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
sign(-6.0) # 返回 -1
sign(0.0) # 返回 0
sign(6.0) # 返回 1
sign(NAN) # 返回 0
sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)
注意:为了更好的类型安全,请使用 signf()、signi()、Vector2.sign()、Vector2i.sign()、Vector3.sign()、Vector3i.sign()、Vector4.sign() 或 Vector4i.sign()。
如果 x 为负,则返回 -1.0;如果 x 为正,则返回 1.0;如果 x 为零,则返回 0.0。如果 x 为 nan 则返回 0.0。
signf(-6.5) # 返回 -1.0
signf(0.0) # 返回 0.0
signf(6.5) # 返回 1.0
signf(NAN) # 返回 0.0
如果 x 为负,则返回 -1;如果 x 为正,则返回 1;如果 x 为零,则返回 0。
signi(-6) # 返回 -1
signi(0) # 返回 0
signi(6) # 返回 1
返回弧度角 angle_rad 的正弦值。
sin(0.523599) # 返回 0.5
sin(deg_to_rad(90)) # 返回 1.0
返回 x 的双曲正弦值。
var a = log(2.0) # 返回 0.693147
sinh(a) # 返回 0.75
float smoothstep(from: float, to: float, x: float) 🔗
返回在 0 和 1 之间的平滑三次 Hermite 插值结果。
对于正范围(当 from <= to 时),当 x <= from 时返回值为 0,当 x >= to 时返回值为 1。如果 x 位于 from 和 to 之间,返回值遵循一条 S 形曲线,平滑地从 0 过渡到 1。
对于负范围(当 from > to 时),函数镜像翻转,当 x <= to 时返回值为 1,当 x >= from 时返回值为 0。
这条 S 形曲线是三次 Hermite 插值器,由 f(y) = 3y^2 - 2y^3 给出,其中 y = (x-from) / (to-from)。
smoothstep(0, 2, -5.0) # 返回 0.0
smoothstep(0, 2, 0.5) # 返回 0.15625
smoothstep(0, 2, 1.0) # 返回 0.5
smoothstep(0, 2, 2.0) # 返回 1.0
与曲线值为 -1.6521 的 ease() 方法相比,smoothstep() 返回的曲线是最平滑的,导数没有突变。如果你需要执行更高级的过渡效果,请使用 Tween 或 AnimationPlayer。
smoothstep() 和 ease(x, -1.6521) 返回值的比较
Variant snapped(x: Variant, step: Variant) 🔗
返回最接近 x 的 step 的倍数。这也可用于将一个浮点数四舍五入为任意小数位数。
返回值是与 step 相同类型的 Variant。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
snapped(100, 32) # 返回 96
snapped(3.14159, 0.01) # 返回 3.14
snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)
注意:为了更好的类型安全,请使用 snappedf()、snappedi()、Vector2.snapped()、Vector2i.snapped()、Vector3.snapped()、Vector3i.snapped()、Vector4.snapped()、Vector4i.snapped()。
float snappedf(x: float, step: float) 🔗
返回最接近 x 的 step 的倍数。也可用于将浮点数四舍五入为任意的小数位数。
snappedf(32.0, 2.5) # 返回 32.5
snappedf(3.14159, 0.01) # 返回 3.14
int snappedi(x: float, step: int) 🔗
返回最接近 x 的 step 的倍数。
snappedi(53, 16) # 返回 48
snappedi(4096, 100) # 返回 4100
返回 x 的平方根,x 为非负数。
sqrt(9) # 返回 3
sqrt(10.24) # 返回 3.2
sqrt(-1) # 返回 NaN
注意:负数的 x 会返回 NaN(“不是数字”)。在 C# 中,如果需要负输入,请使用 System.Numerics.Complex。
返回小数点后第一个非零数字的位置。注意最大返回值是 10,这是实现中的设计决定。
var n = step_decimals(5) # n 为 0
n = step_decimals(1.0005) # n 为 4
n = step_decimals(0.000000005) # n 为 9
尽可能以最佳方式将一个或多个任何 Variant 类型的参数转换为一个 String。
var a = [10, 20, 30]
var b = str(a)
print(len(a)) # 输出 3(数组中元素的数量)。
print(len(b)) # 输出 12(字符串“[10, 20, 30]”的长度)。
Variant str_to_var(string: String) 🔗
将 var_to_str() 返回的已格式化的 string 转换为原始 Variant。
var data = '{ "a": 1, "b": 2 }' # data 是一个 String
var dict = str_to_var(data) # dict 是一个 Dictionary
print(dict["a"]) # 输出 1
string data = "{ \"a\": 1, \"b\": 2 }"; // data 是一个 string
var dict = GD.StrToVar(data).AsGodotDictionary(); // dict 是一个 Dictionary
GD.Print(dict["a"]); // 输出 1
返回弧度角 angle_rad 的正切值。
tan(deg_to_rad(45)) # 返回 1
返回 x 的双曲正切值。
var a = log(2.0) # 返回 0.693147
tanh(a) # 返回 0.6
Variant type_convert(variant: Variant, type: int) 🔗
使用 Variant.Type 值将给定的 variant 转换为给定的 type。此方法对类型的处理十分宽松,可以在数组类型之间自动转换,将数值的 String 转换为 int,也可以将大多数内容转换为 String。
如果无法完成类型转换,此方法将返回该类型的默认值,例如 Rect2 转换为 Vector2 时将总是返回 Vector2.ZERO。只要 type 是一个有效的 Variant 类型,此方法就永远不会显示错误消息。
返回的值是一个 Variant,但是其中的数据以及其类型将会与请求的类型相同。
type_convert("Hi!", TYPE_INT) # 返回 0
type_convert("123", TYPE_INT) # 返回 123
type_convert(123.4, TYPE_INT) # 返回 123
type_convert(5, TYPE_VECTOR2) # 返回 (0, 0)
type_convert("Hi!", TYPE_NIL) # 返回 null
String type_string(type: int) 🔗
返回类型 type 的人类可读名称,参数使用 Variant.Type 的值。
print(TYPE_INT) # 输出 2
print(type_string(TYPE_INT)) # 输出“int”
print(type_string(TYPE_STRING)) # 输出“String”
另见 typeof()。
int typeof(variable: Variant) 🔗
返回给定 variable 的内部类型,使用 Variant.Type 枚举值表示。
var json = JSON.new()
json.parse('["a", "b", "c"]')
var result = json.get_data()
if typeof(result) == TYPE_ARRAY:
print(result[0]) # 输出“a”
else:
print("预料之外的结果!")
另见 type_string()。
PackedByteArray var_to_bytes(variable: Variant) 🔗
将 Variant 值编码为字节数组,不编码对象。反序列化可以使用 bytes_to_var() 来完成。
注意:如果需要对象序列化,参见 var_to_bytes_with_objects()。
注意:编码 Callable 不受支持,无论数据如何,都会导致空值。
PackedByteArray var_to_bytes_with_objects(variable: Variant) 🔗
将 Variant 值编码为字节数组。允许对对象进行编码(并且可能包括可执行代码)。反序列化可以使用 bytes_to_var_with_objects() 来完成。
注意:编码 Callable 不受支持,无论数据如何,都会导致空值。
String var_to_str(variable: Variant) 🔗
将 Variant variable 转换为格式化的 String,后续可以使用 str_to_var() 对其进行解析。
var a = { "a": 1, "b": 2 }
print(var_to_str(a))
var a = new Godot.Collections.Dictionary { ["a"] = 1, ["b"] = 2 };
GD.Print(GD.VarToStr(a));
输出:
{
"a": 1,
"b": 2
}
注意:不支持转换 Signal 和 Callable,这些类型无论有什么数据,转换后都是空值。
Variant weakref(obj: Variant) 🔗
返回一个 WeakRef 实例,其中包含对 obj 的弱引用。如果 obj 为 null,则返回空的 WeakRef 实例。如果 obj 既不是 Object 派生实例,也不是 null,则打印错误并返回 null。
对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾回收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁之前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。
Variant wrap(value: Variant, min: Variant, max: Variant) 🔗
在 min 和 max 之间包裹 Variant value。min 包含端点,max 则不包含。可用于创建类似循环的行为或无限表面。
支持变体类型 int 和 float。如果任一参数是 float,则该函数返回 float,否则返回 int。
var a = wrap(4, 5, 10)
# a 为 9 (整数类型)
var a = wrap(7, 5, 10)
# a 为 7 (整数类型)
var a = wrap(10.5, 5, 10)
# a 为 5.5 (浮点类型)
float wrapf(value: float, min: float, max: float) 🔗
在 min 和 max 之间将浮点数 value 循环。min 包含端点,max 则不包含。可用于创建类似循环的行为或无限表面。
# 在 5.0 和 9.9 之间无限循环
value = wrapf(value + 0.1, 5.0, 10.0)
# 无限旋转(弧度)
angle = wrapf(angle + 0.1, 0.0, TAU)
# 无限旋转(弧度)
angle = wrapf(angle + 0.1, -PI, PI)
注意:如果 min 为 0,则相当于 fposmod(),因此请优先使用后者。通过让用户控制最小值,wrapf() 比使用 fposmod() 方法更灵活。
int wrapi(value: int, min: int, max: int) 🔗
在 min 和 max 之间环绕整数 value。min 包含端点,max 则不包含。可用于创建类似循环的行为或无限曲面。
# 在 5 和 9 之间无限循环
frame = wrapi(frame + 1, 5, 10)
# result 是 -2
var result = wrapi(-6, -5, -1)