@GlobalScope¶
全局范围常量和函数。
描述¶
全局范围枚举常量和内置函数的列表。这就是驻留在全局变量中的所有内容,关于错误代码、关键代码、属性提示等的常量。
这里也记录了单例,因为它们可以从任何地方访问。
有关只能从用S3Script编写的脚本访问的条目,请参阅@S3Script。
属性¶
方法¶
枚举¶
enum Side: 🔗
Side SIDE_LEFT = 0
Side SIDE_TOP = 1
Side SIDE_RIGHT = 2
Side SIDE_BOTTOM = 3
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
Escape键。
Key KEY_TAB = 4194306
Tab键。
Key KEY_BACKTAB = 4194307
Shift+Tab键。
Key KEY_BACKSPACE = 4194308
Backspace键。
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
Left arrow键。
Key KEY_UP = 4194320
Up arrow键。
Key KEY_RIGHT = 4194321
Right arrow键。
Key KEY_DOWN = 4194322
Down arrow键。
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
帮助键。
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
备用键。
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键盘上的“Globe”键。
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
数字符号或hash(#)键。
Key KEY_DOLLAR = 36
美元符号($)键。
Key KEY_PERCENT = 37
百分号(%)键。
Key KEY_AMPERSAND = 38
&(&)键。
Key KEY_APOSTROPHE = 39
Apostrophe(')键。
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
Caret(^)键。
Key KEY_UNDERSCORE = 95
下划线(_)键。
Key KEY_QUOTELEFT = 96
反勾(')键。
Key KEY_BRACELEFT = 123
左大括号({)键。
Key KEY_BAR = 124
垂直条或管道(|)键。
Key KEY_BRACERIGHT = 125
右大括号(})键。
Key KEY_ASCIITILDE = 126
Tilde(~)键。
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
控制键掩码。
KeyModifierMask KEY_MASK_KPAD = 536870912
键盘键掩码。
KeyModifierMask KEY_MASK_GROUP_SWITCH = 1073741824
组切换键掩码。
enum KeyLocation: 🔗
KeyLocation KEY_LOCATION_UNSPECIFIED = 0
用于仅出现一次的键,或者当比较不需要区分LEFT和右版本时。
例如,当使用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。对应顶部动作按钮:索尼三角、Xbox Y、任天堂X。
JoyButton JOY_BUTTON_BACK = 4
应用控制器SDL后退按钮。对应于Sony Select、Xbox Back、Nintendo-按钮。
JoyButton JOY_BUTTON_GUIDE = 5
应用控制器SDL引导按钮。对应索尼PS、Xbox Home按钮。
JoyButton JOY_BUTTON_START = 6
应用控制器SDL启动按钮。对应索尼选项、Xbox菜单、任天堂+按钮。
JoyButton JOY_BUTTON_LEFT_STICK = 7
应用控制器SDL左键。对应索尼L3、Xbox L/LS按钮。
JoyButton JOY_BUTTON_RIGHT_STICK = 8
应用控制器SDL右键。对应索尼R3、Xbox R/RS按钮。
JoyButton JOY_BUTTON_LEFT_SHOULDER = 9
应用控制器SDL左肩按钮。对应索尼L1、Xbox LB按钮。
JoyButton JOY_BUTTON_RIGHT_SHOULDER = 10
应用控制器SDL右肩按钮。对应索尼R1、Xbox RB按钮。
JoyButton JOY_BUTTON_DPAD_UP = 11
应用控制器D-pad向上按钮。
JoyButton JOY_BUTTON_DPAD_DOWN = 12
应用控制器D-pad向下按钮。
JoyButton JOY_BUTTON_DPAD_LEFT = 13
应用控制器D-pad左按钮。
JoyButton JOY_BUTTON_DPAD_RIGHT = 14
应用控制器D-pad右键。
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设备中,控制器是任何不播放音符的输入。这些可能包括用于音量、平衡和平移的滑块,以及开关和踏板。有关小列表,请参阅通用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消息发送24次后MIDI_MESSAGE_QUARTER_FRAME,以保持连接的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
方法返回Error时,如果没有发生错误,则返回OK。由于OK的值为0,而其他所有错误常量都是正整数,因此它也可以用于布尔检查。
var error = method_that_returns_error()
if error != OK:
printerr("Failure!")
# Or, alternatively:
if error:
printerr("Still failing!")
注意:许多函数不会返回错误代码,但会将错误消息打印到标准输出。
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
错误错误,由方法中的实现问题引起。
注意:如果内置方法返回此代码,请在GitHub问题跟踪器上打开问题。
Error ERR_PRINTER_ON_FIRE = 48
打印机着火错误(这是一个复活节彩蛋,没有内置方法返回此错误代码)。
enum PropertyHint: 🔗
PropertyHint PROPERTY_HINT_NONE = 0
该属性没有对编辑器的提示。
PropertyHint PROPERTY_HINT_RANGE = 1
提示int或float属性应在通过提示字符串"min, max"或"min,max,Step"指定的范围内。提示字符串可以选择包含"or_greater"和/或"or_less",以允许手动输入分别高于最大值或低于最小值。
示例:"-360,360,1,or_greater,or_less"。
此外,还可以包括其他关键字:"exp"用于指数范围编辑,"radians_as_degrees"用于编辑弧度角度(范围值也以度为单位),"degrees"用于提示角度,"hide_slider"用于隐藏滑块。
PropertyHint PROPERTY_HINT_ENUM = 2
提示int或String属性是要在通过提示字符串指定的列表中选择的枚举值。
提示字符串是一个逗号分隔的名称列表,例如“Hello,某事, Else”。空格是而不是从名称的任何一端删除的。对于整数属性,列表中的第一个名称的值为0,接下来的值为1,依此类推。显式值也可以通过将:integer附加到名称来指定,例如“Zero,One,Three:3,IV,六:6”。
PropertyHint PROPERTY_HINT_ENUM_SUGGESTION = 3
提示String属性可以是一个枚举值,可以在通过提示字符串(例如"Hello,Something,Else")指定的列表中进行挑选。
与PROPERTY_HINT_ENUM不同,具有此提示的属性仍然接受任意值并且可以为空。值列表用于建议可能的值。
PropertyHint PROPERTY_HINT_EXP_EASING = 4
提示应通过指数松弛函数编辑float属性。提示字符串可以包含"attentions"以水平翻转曲线和/或"positive_only"以排除输入/输出松弛并将值限制为大于或等于零。
PropertyHint PROPERTY_HINT_LINK = 5
提示向量属性应允许链接其组件。例如,这允许一起编辑Vector2.x和Vector2.y。
PropertyHint PROPERTY_HINT_FLAGS = 6
提示int属性是具有命名位标志的位掩码。
提示字符串是一个逗号分隔的名称列表,例如“Bit0, Bit1,Bit2,Bit3”。空格是而不是从名称的任何一端删除的。列表中的第一个名称的值为1,接下来是2,然后是4、8、16,依此类推。显式值也可以通过在名称后附加:integer来指定,例如“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"。
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属性是带有换行符的文本。编辑它将显示一个可以输入换行符的文本输入字段。
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必须使用":"和"/"编码嵌套类型。
# Array of elem_type.
hint_string = "%d:" % [elem_type]
hint_string = "%d/%d:%s" % [elem_type, elem_hint, elem_hint_string]
# Two-dimensional array of elem_type (array of arrays of 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]
# Three-dimensional array of elem_type (array of arrays of arrays of 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]
// Array of elemType.
hintString = $"{elemType:D}:";
hintString = $"{elemType:}/{elemHint:D}:{elemHintString}";
// Two-dimensional array of elemType (array of arrays of elemType).
hintString = $"{Variant.Type.Array:D}:{elemType:D}:";
hintString = $"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
// Three-dimensional array of elemType (array of arrays of arrays of elemType).
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}";
Examples:
hint_string = "%d:" % [TYPE_INT] # Array of integers.
hint_string = "%d/%d:1,10,1" % [TYPE_INT, PROPERTY_HINT_RANGE] # Array of integers (in range from 1 to 10).
hint_string = "%d/%d:Zero,One,Two" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # Array of integers (an enum).
hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # Array of strings (file paths).
hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Array of textures.
hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # Two-dimensional array of floats.
hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # Two-dimensional array of multiline strings.
hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # Two-dimensional array of floats (in range from -1 to 1).
hint_string = "%d:%d/%d:Texture2D" % [TYPE_ARRAY, TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # Two-dimensional array of textures.
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1"; // Array of integers (in range from 1 to 10).
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two"; // Array of integers (an enum).
hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // Array of integers (an enum).
hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // Array of strings (file paths).
hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Array of textures.
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // Two-dimensional array of floats.
hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // Two-dimensional array of multiline strings.
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // Two-dimensional array of floats (in range from -1 to 1).
hintString = $"{Variant.Type.Array:D}:{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // Two-dimensional array of textures.
注意:正确检测内置类型需要跟随冒号。
PropertyHint PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE = 24
已弃用: 该提示不会被引擎使用。
PropertyHint PROPERTY_HINT_OBJECT_TOO_BIG = 25
提示对象太大而无法通过调试器发送。
PropertyHint PROPERTY_HINT_NODE_PATH_VALID_TYPES = 26
提示提示字符串为ItemPath类型的属性指定有效的节点类型。
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
已弃用: 该提示不会被引擎使用。
PropertyHint PROPERTY_HINT_INT_IS_POINTER = 30
提示int属性是一个指针。由S3Extension使用。
PropertyHint PROPERTY_HINT_ARRAY_TYPE = 31
提示属性是Array,其存储类型在提示字符串中指定。
PropertyHint PROPERTY_HINT_DICTIONARY_TYPE = 38
提示属性是具有在提示字符串中指定的存储类型的Dictionary。
PropertyHint PROPERTY_HINT_LOCALE_ID = 32
提示字符串属性是区域设置代码。编辑它将显示一个用于选择语言和国家/地区的区域设置对话框。
PropertyHint PROPERTY_HINT_LOCALIZABLE_STRING = 33
提示字典属性是字符串翻译映射。字典键是语言环境代码,值是翻译字符串。
PropertyHint PROPERTY_HINT_NODE_TYPE = 34
提示属性是Item派生类型的实例,可选择通过提示字符串指定(例如"Node2D")。编辑它将显示一个用于从场景中选择节点的对话框。
PropertyHint PROPERTY_HINT_HIDE_QUATERNION_EDIT = 35
提示四元数属性应禁用临时欧拉编辑器。
PropertyHint PROPERTY_HINT_PASSWORD = 36
提示字符串属性是密码,并且每个字符都替换为秘密字符。
PropertyHint PROPERTY_HINT_TOOL_BUTTON = 39
提示一个Callable属性应该显示为可点击的按钮。当按下该按钮时,可调用对象就会被调用。提示字符串指定了按钮文本,并可选择使用"EditorIcons"主题类型的图标。
"Click me!" - A button with the text "Click me!" and the default "Callable" icon.
"Click me!,ColorRect" - A button with the text "Click me!" and the "ColorRect" icon.
注意: Callable无法正确序列化并存储在文件中,因此建议使用PROPERTY_USAGE_EDITOR而不是PROPERTY_USAGE_DEFAULT。
PropertyHint PROPERTY_HINT_ONESHOT = 40
提示属性将在设置后自行更改,例如AudioStreamPlayer.playing或ParticlesGPU.emitting。
PropertyHint PROPERTY_HINT_MAX = 42
表示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
已弃用: 该标志不会被引擎使用。
PropertyUsageFlags PROPERTY_USAGE_CLASS_IS_ENUM = 65536
该属性是枚举类型的变量,即它只从其关联的枚举中获取命名整数常量。
PropertyUsageFlags PROPERTY_USAGE_NIL_IS_VARIANT = 131072
如果属性具有nil作为默认值,则其类型将为Variant。
PropertyUsageFlags PROPERTY_USAGE_ARRAY = 262144
该属性是一个数组。
PropertyUsageFlags PROPERTY_USAGE_ALWAYS_DUPLICATE = 524288
使用Resource.duplicate()复制资源时,并且在该资源的属性上设置了此标志,则应始终复制该属性,无论subresourcesbool参数如何。
PropertyUsageFlags PROPERTY_USAGE_NEVER_DUPLICATE = 1048576
使用Resource.duplicate()复制资源时,并且在该资源的属性上设置了此标志,无论subresourcesbool参数如何,都不应复制该属性。
PropertyUsageFlags PROPERTY_USAGE_HIGH_END_GFX = 2097152
仅当支持现代渲染器时,该属性才会在编辑器中显示(不包括兼容性渲染方法)。
PropertyUsageFlags PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT = 4194304
ItemPath属性将始终相对于场景的根。对本地资源最有用。
PropertyUsageFlags PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT = 8388608
在动态创建资源时使用,即getter将始终返回不同的实例。ResourceSaver需要此信息来正确保存此类资源。
PropertyUsageFlags PROPERTY_USAGE_KEYING_INCREMENTS = 16777216
插入此属性的动画关键帧将自动增加值,从而可以轻松地在一行中关键帧多个值。
PropertyUsageFlags PROPERTY_USAGE_DEFERRED_SET_RESOURCE = 33554432
已弃用: 该标志不会被引擎使用。
PropertyUsageFlags PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT = 67108864
当此属性为Resource且基对象为Item时,只要在编辑器中创建节点,就会自动创建资源实例。
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
所需的虚拟方法的标志。
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
变量的类型为ItemPath。
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
逻辑异或运算符(未在S3Script中实现)。
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 🔗
EditorInterface EditorInterface 🔗
注意:仅在编辑器版本中可用。
Engine单例。
EngineDebugger EngineDebugger 🔗
S3ExtensionManager S3ExtensionManager 🔗
Geometry2D Geometry2D 🔗
Geometry2D单例。
Geometry3D Geometry3D 🔗
Geometry3D单例。
IP单例。
Input单例。
InputMap单例。
JavaClassWrapper JavaClassWrapper 🔗
注意:仅在Android上实现。
JavaScriptBridge JavaScriptBridge 🔗
注意:仅在Web平台上实现。
Marshalls单例。
NativeMenu单例。
注意:仅在macOS上实现。
OS单例。
Performance Performance 🔗
Performance单例。
PhysicsServer2D PhysicsServer2D 🔗
PhysicsServer2D单例。
PhysicsServer2DManager PhysicsServer2DManager 🔗
PhysicsServer2DManager单例。
PhysicsServer3D PhysicsServer3D 🔗
PhysicsServer3DManager PhysicsServer3DManager 🔗
ProjectSettings ProjectSettings 🔗
RenderingServer RenderingServer 🔗
ResourceLoader ResourceLoader 🔗
ResourceSaver ResourceSaver 🔗
ResourceUID ResourceUID 🔗
ResourceUID单例。
TextServerManager TextServerManager 🔗
ThemeDB单例。
Time单例。
TranslationServer TranslationServer 🔗
WorkerThreadPool WorkerThreadPool 🔗
XRServer单例。
方法说明¶
返回Variant参数x的绝对值(即非负值)。支持的类型: int, float, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i。
var a = abs(-1)
# a is 1
var b = abs(-1.2)
# b is 1.2
var c = abs(Vector2(-3.5, -4))
# c is (3.5, 4)
var d = abs(Vector2i(-5, -6))
# d is (5, 6)
var e = abs(Vector3(-7, 8.5, -3.8))
# e is (7, 8.5, 3.8)
var f = abs(Vector3i(-7, -8, -9))
# f is (7, 8, 9)
注意: 为了提高类型安全性,请使用 absf(),absi(),Vector2.abs(),Vector2i.abs(),Vector3.abs(),Vector3i.abs(),Vector4.abs(),或 Vector4i.abs()。
返回float参数x的绝对值(即正值)。
# a is 1.2
var a = absf(-1.2)
返回int参数x的绝对值(即正值)。
# a is 1
var a = absi(-1)
返回以弧度表示的x的反余弦值。用于根据余弦值x获取对应的角度。x将被限制在-1.0到1.0之间(含边界),以防止acos()方法返回@S3Script.NAN。
# c is 0.523599 or 30 degrees if converted with rad_to_deg(c)
var c = acos(0.866025)
返回以弧度表示的x的双曲反余弦值。当x大于或等于1时,可用于在双曲空间中根据余弦值获取对应角度;若x小于1,将返回0以防止acosh()方法返回@S3Script.NAN。
var a = acosh(2) # Returns 1.31695789692482
cosh(a) # Returns 2
var b = acosh(-1) # Returns 0
float angle_difference(from: float, to: float) 🔗
返回两个角度之间的差(以弧度为单位),范围为[-PI,+PI]。当from和to相反时,如果from小于to,则返回-PI,否则返回PI。
返回以弧度表示的x的反正弦值。用于获取正弦值x对应的角度。x将被限制在-1.0到1.0之间(含边界),以防止asin()方法返回@S3Script.NAN。
# s is 0.523599 or 30 degrees if converted with rad_to_deg(s)
var s = asin(0.5)
返回以弧度表示的x的双曲反正弦值。当x大于或等于1时,可用于在双曲空间中根据正弦值获取对应角度。
var a = asinh(0.9) # Returns 0.8088669356527824
sinh(a) # Returns 0.9
返回以弧度表示的x的反正切值。用于在三角函数中根据正切值获取对应角度。
该方法无法判断角度应处于哪个象限,若您同时拥有y和x坐标值,请参考atan2()。
var a = atan(0.5) # a is 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 is 3.141593
返回以弧度表示的x的双曲反正切值。当x处于-1到1之间(不含边界)时,可用于在双曲空间中根据正切值获取对应角度。
在数学中,反双曲正切函数仅在实数集合中定义为-1 < x < 1,因此x的值等于或小于-1时返回负的 @S3Script.INF,值等于或大于1时返回正的 @S3Script.INF,以防止atanh()返回@S3Script.NAN。
var a = atanh(0.9) # Returns 1.47221948958322
tanh(a) # Returns 0.9
var b = atanh(-2) # Returns -inf
tanh(b) # Returns -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 is 2.0
i = ceil(1.001) # i is 2.0
另请参阅 floor(),round(),及 snapped()。
注意: 为了提高类型安全性,请使用 ceilf(),ceili(),Vector2.ceil(),Vector3.ceil(),或 Vector4.ceil()。
向上舍入x(朝向正无穷大),返回不小于x的最小整数。
向上舍入x(朝向正无穷大),返回不小于x的最小整数。
Variant clamp(value: Variant, min: Variant, max: Variant) 🔗
限制value,返回一个Variant,其值不小于min且不大于max。任何可以用小于和大于运算符进行比较的值都适用。
var a = clamp(-10, -1, 5)
# a is -1
var b = clamp(8.1, 0.9, 5.5)
# b is 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,返回一个float,其值不小于min且不大于max。
var speed = 42.1
var a = clampf(speed, 1.0, 20.5) # a is 20.5
speed = -10.0
var b = clampf(speed, -1.0, 1.0) # b is -1.0
int clampi(value: int, min: int, max: int) 🔗
限制value,返回一个int,其值不小于min且不大于max。
var speed = 42
var a = clampi(speed, 1, 20) # a is 20
speed = -10
var b = clampi(speed, -1, 1) # b is -1
返回以弧度表示的angle_rad的余弦值。
cos(PI * 2) # Returns 1.0
cos(PI) # Returns -1.0
cos(deg_to_rad(90)) # Returns 0.0
返回以弧度表示的x的双曲余弦值。
print(cosh(1)) # Prints 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 is 3.141593
float ease(x: float, curve: float) 🔗
根据curve定义的缓动函数,返回x的"缓动"值。该缓动函数基于指数。curve可以是任何浮点数,具有导致以下行为的特定值:
- Lower than -1.0 (exclusive): Ease in-out
- -1.0: Linear
- Between -1.0 and 0.0 (exclusive): Ease out-in
- 0.0: Constant
- Between 0.0 to 1.0 (exclusive): Ease out
- 1.0: Linear
- Greater than 1.0 (exclusive): Ease in
另请参阅smoothstep()。若您需要执行更高级的过渡,请使用Tween.interpolate_value()。
String error_string(error: int) 🔗
返回给定Error代码的人类可读名称。
print(OK) # Prints 0
print(error_string(OK)) # Prints "OK"
print(error_string(ERR_BUSY)) # Prints "Busy"
print(error_string(ERR_OUT_OF_MEMORY)) # Prints "Out of memory"
自然指数函数。它求取数学常数e的x次幂并将其返回。
e的近似值为2.71828,可以通过exp(1)获得。
若要计算其他基数的指数,请使用 pow()方法。
var a = exp(2) # Approximately 7.39
向下取整 x (向负无穷大方向),返回不大于 x 的最大整数。支持的类型: int, float, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i
var a = floor(2.99) # a is 2.0
a = floor(-2.99) # a is -3.0
另请参阅 ceil(),round(),及snapped().
注意:为了提高类型安全性,请使用floorf(),floori(),Vector2.floor(),Vector3.floor(),或Vector4.floor()。
向下舍入x(朝向负无穷大),返回不超过x的最大整数。
向下舍入x(朝向负无穷大),返回不超过x的最大整数。
注意:这个函数是而不是与int(x)相同,它向0舍入。
float fmod(x: float, y: float) 🔗
返回x除以y的浮点余数,并保留x的符号。
var remainder = fmod(7, 5.5) # remainder is 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")) # Prints 177670
S3.Print(S3.Hash("a")); // Prints 177670
Object instance_from_id(instance_id: int) 🔗
返回与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.foo) # Prints "water"
public partial class MyNode : Item
{
public string Drink { get; set; } = "water";
public override void _Ready()
{
ulong id = GetInstanceId();
var instance = (MyNode)InstanceFromId(Id);
S3.Print(instance.Drink); // Prints "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()。
# The interpolation ratio in the `lerp()` call below is 0.75.
var middle = lerp(20, 30, 0.75)
# middle is now 27.5.
# Now, we pretend to have forgotten the original ratio and want to get it back.
var ratio = inverse_lerp(20, 30, 27.5)
# ratio is now 0.75.
另请参阅lerp(),该方法反向执行这一操作,而remap()将一个连续的数值序列映射到另一个序列。
bool is_equal_approx(a: float, b: float) 🔗
如果a和b近似相等,则返回true。
这里,“近似相等”意味着a和b在彼此的小内部ε内,这与数字的大小成比例。
相同符号的无穷大值被认为是相等的。
返回x是否为有限值,即它不是@S3Script.NAN、正无穷大或负无穷大。
如果x是正无穷大或负无穷大,则返回true。
bool is_instance_id_valid(id: int) 🔗
如果id对应的对象是有效对象(例如尚未从内存中删除),则返回true。所有对象都有一个唯一的实例ID。
bool is_instance_valid(instance: Variant) 🔗
如果instance是有效的对象(例如尚未从内存中删除),则返回true。
如果x是NaN(“非数字”或无效)值,则返回true。
bool is_same(a: Variant, b: Variant) 🔗
若a和b为值类型且二者值相同,则返回true。若a和b为引用类型且二者引用相同,则返回true。
# Vector2 is a value type
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 is a reference type
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, ItemPath, 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。比较是使用具有小内部ε的公差计算完成的。
此函数比使用一个值为零的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) # Returns 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(),但能正确处理角度绕@S3Script.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) # Returns 3.0
另请参阅inverse_lerp(),该方法反向执行这一操作。要使用lerp()执行缓动插值,请将其与ease()或smoothstep()结合使用。
float linear_to_db(lin: float) 🔗
将线性能量转换为分贝(音频)。由于音量通常不是线性的,因此可以使用此方法实现符合期望的音量滑块。
示例:通过Slider节点更改主总线的音量,该节点的范围从0.0到1.0:
AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db($Slider.value))
返回x的自然对数(以e为底,e约为2.71828)。这是达到一定连续增长所需的时间。
注意:这与大多数计算器上的 "log" 函数不同,后者使用以10为底的对数。如果要使用以10为底的对数,请使用log(x) / log(10)。
log(10) # Returns 2.302585
注意:0的对数值为-inf,而负数的对数值为-nan。
返回给定数值中的最大值。此函数可以接受任意数量的参数。
max(1, 7, 3, -6, 5) # Returns 7
注意:在向量上使用这个函数时,它不会对每个分量取最大值,而是选取以 x < y 进行比较时的最大值。要对每个分量取最大值,请使用Vector2.max(), Vector2i.max(), Vector3.max(), Vector3i.max(), Vector4.max(), 以及 Vector4i.max()。
float maxf(a: float, b: float) 🔗
返回两个float值中的最大值。
maxf(3.6, 24) # Returns 24.0
maxf(-3.99, -4) # Returns -3.99
返回两个int值中的最大值。
maxi(1, 2) # Returns 2
maxi(-3, -4) # Returns -3
返回给定数值中的最小值。此函数可以接受任意数量的参数。
min(1, 7, 3, -6, 5) # Returns -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) # Returns 3.6
minf(-3.99, -4) # Returns -4.0
返回两个int值中的最小值。
mini(1, 2) # Returns 1
mini(-3, -4) # Returns -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) # Returns 4
nearest_po2(4) # Returns 4
nearest_po2(5) # Returns 8
nearest_po2(0) # Returns 0 (this may not be expected)
nearest_po2(-1) # Returns 0 (this may not be expected)
警告:由于其实现,该方法对于小于或等于0的值返回0而不是1,但value为最小负64位整数(-9223372036854775808)时除外,在这种情况下,value保持不变。
float pingpong(value: float, length: float) 🔗
在0到length之间对value进行循环处理。当达到边界时,函数返回的值会向0方向递减或向length方向递增(类似于三角波形)。若length小于零,其将转为正数。
pingpong(-3.0, 3.0) # Returns 3.0
pingpong(-2.0, 3.0) # Returns 2.0
pingpong(-1.0, 3.0) # Returns 1.0
pingpong(0.0, 3.0) # Returns 0.0
pingpong(1.0, 3.0) # Returns 1.0
pingpong(2.0, 3.0) # Returns 2.0
pingpong(3.0, 3.0) # Returns 3.0
pingpong(4.0, 3.0) # Returns 2.0
pingpong(5.0, 3.0) # Returns 1.0
pingpong(6.0, 3.0) # Returns 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)])
Prints:
(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次幂的结果。
在S3Script中, 这等同于** operator.
pow(2, 5) # Returns 32.0
pow(4, 1.5) # Returns 8.0
void print(...) vararg 🔗
以尽可能好的方式将一个或多个任何类型的参数转换为字符串,并将它们输出到控制台。
var a = [1, 2, 3]
print("a", "b", a) # Prints "ab[1, 2, 3]"
i3D.Collections.Array a = [1, 2, 3];
S3.Print("a", "b", a); // Prints "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]") # Prints "Hello world!", in green with a bold font.
S3.PrintRich("[color=green][b]Hello world![/b][/color]"); // Prints "Hello world!", in green with a bold font.
注意:考虑使用push_error()和push_warning()来输出错误和警告消息,而不是print()或print_rich()。这可以将它们与用于调试的输出消息区分开来,同时在输出错误或警告时显示堆栈跟踪。另请参阅Engine.print_to_stdout和ProjectSettings.application/run/disable_stdout。
注意: 在Windows上,只有Windows 10及更高版本在标准输出中正确显示ANSI转义码。
注意:编辑器中显示的输出支持可单击的[url=address]text[/url]标记。单击时,[url]标记的地址值由OS.shell_open()处理。
void print_verbose(...) vararg 🔗
如果启用了详细模式(OS.is_stdout_verbose()返回true),则以最佳方式将任何类型的一个或多个参数转换为字符串并将它们打印到控制台。
void printerr(...) vararg 🔗
以尽可能好的方式将一个或多个参数以字符串形式输出到标准错误行。
printerr("prints to stderr")
S3.PrintErr("prints to stderr");
void printraw(...) vararg 🔗
以尽可能好的方式将一个或多个参数以字符串形式输出到操作系统终端。与print()不同,不会在结尾自动添加换行符。
注意:操作系统终端不等同于编辑器的输出面板。从终端运行i3D时,可以看到发送到操作系统终端的输出。在Windows上,这需要使用可执行文件console. exe。
# Prints "ABC" to terminal.
printraw("A")
printraw("B")
printraw("C")
// Prints "ABC" to terminal.
S3.PrintRaw("A");
S3.PrintRaw("B");
S3.PrintRaw("C");
void prints(...) vararg 🔗
将一个或多个参数输出到控制台,参数之间各以一个空格隔开。
prints("A", "B", "C") # Prints "A B C"
S3.PrintS("A", "B", "C"); // Prints "A B C"
void printt(...) vararg 🔗
将一个或多个参数输出到控制台,参数之间各以一个制表符隔开。
printt("A", "B", "C") # Prints "A B C"
S3.PrintT("A", "B", "C"); // Prints "A B C"
void push_error(...) vararg 🔗
向 i3D 的内置调试器和操作系统终端推送一条报错信息。
push_error("test error") # Prints "test error" to debugger and terminal as an error.
S3.PushError("test error"); // Prints "test error" to debugger and terminal as an error.
注意:此函数不会暂停项目执行。要在调试版本中输出报错信息并暂停项目执行,请改用 assert(false, "test error")。
void push_warning(...) vararg 🔗
向 i3D 的内置调试器和操作系统终端推送一条报错信息。
push_warning("test warning") # Prints "test warning" to debugger and terminal as a warning.
S3.PushWarning("test warning"); // Prints "test warning" to debugger and terminal as a warning.
float rad_to_deg(rad: float) 🔗
将以弧度为单位的角度转换为度。
rad_to_deg(0.523599) # Returns 30
rad_to_deg(PI) # Returns 180
rad_to_deg(PI * 2) # Returns 360
PackedInt64Array rand_from_seed(seed: int) 🔗
给定一个seed,返回一个大小为2的PackedInt64Array,其第一个元素是随机的int值,第二个元素与seed相同。传递相同的seed将始终返回相同的数组。
注意:此处的“种子”指的是伪随机数生成器的内部状态,目前实现为一个64位整数。
var a = rand_from_seed(4)
print(a[0]) # Prints 2879024997
print(a[1]) # Prints 4
返回一个处于0.0与1.0之间(含边界)的随机浮点数。
randf() # Returns e.g. 0.375671
S3.Randf(); // Returns e.g. 0.375671
float randf_range(from: float, to: float) 🔗
返回一个处于from与 to之间(含边界)的随机浮点值。
randf_range(0, 20.5) # Returns e.g. 7.45315
randf_range(-10, 10) # Returns e.g. -3.844535
S3.RandRange(0.0, 20.5); // Returns e.g. 7.45315
S3.RandRange(-10.0, 10.0); // Returns e.g. -3.844535
float randfn(mean: float, deviation: float) 🔗
返回normally-distributed、指定mean的伪随机浮点值和标准deviation。这也称为高斯分布。
注意:此方法使用Box-Muller变换算法。
返回一个随机无符号32位整数。使用余数来获得区间[0, N - 1]中的随机值(其中N小于2^32)。
randi() # Returns random integer between 0 and 2^32 - 1
randi() % 20 # Returns random integer between 0 and 19
randi() % 100 # Returns random integer between 0 and 99
randi() % 100 + 1 # Returns random integer between 1 and 100
S3.Randi(); // Returns random integer between 0 and 2^32 - 1
S3.Randi() % 20; // Returns random integer between 0 and 19
S3.Randi() % 100; // Returns random integer between 0 and 99
S3.Randi() % 100 + 1; // Returns random integer between 1 and 100
int randi_range(from: int, to: int) 🔗
返回一个处于from与 to之间(含边界)的随机有符号32位整数。若 to小于from,二者将互换。
randi_range(0, 1) # Returns either 0 or 1
randi_range(-10, 1000) # Returns random integer between -10 and 1000
S3.RandRange(0, 1); // Returns either 0 or 1
S3.RandRange(-10, 1000); // Returns random integer between -10 and 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) # Returns 0.5
对于需要多个范围的复杂用例,请考虑使用Curve或Gradient。
注意:如果istart == istop,则返回值未定义(很可能是NaN、INF或-INF)
分配一个唯一ID,实现可以使用该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(),但当角度环绕@S3Script.TAU时正确插值。
如果delta为负,则此函数将远离to,朝向相反的角度旋转,并且不会超过相反的角度。
将x舍入为最接近的整数,居中时则向远离0的方向舍入。支持的类型: int, float, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i。
round(2.4) # Returns 2
round(2.5) # Returns 3
round(2.6) # Returns 3
另请参阅 floor(), ceil(), 以及 snapped()。
注意:为提高类型安全性,请使用roundf(), roundi(), Vector2.round(), Vector3.round(), 或 Vector4.round()。
将x舍入到最接近的整数,中途从0舍入。
将x舍入到最接近的整数,中途从0舍入。
将随机数生成器的种子设为base。手动设置随机数种子可以确保大多数随机函数得到一致、可重复的结果。
var my_seed = "i3D Rocks".hash()
seed(my_seed)
var a = randf() + randi()
seed(my_seed)
var b = randf() + randi()
# a and b are now identical
ulong mySeed = (ulong)S3.Hash("i3D Rocks");
S3.Seed(mySeed);
var a = S3.Randf() + S3.Randi();
S3.Seed(mySeed);
var b = S3.Randf() + S3.Randi();
// a and b are now identical
返回与x类型相同的Variant,对于负值返回-1,对于正值返回1,对于零值返回0。对于nan值则返回0。
支持的类型:int, float, Vector2, Vector2i, Vector3, Vector3i, Vector4, Vector4i.
sign(-6.0) # Returns -1
sign(0.0) # Returns 0
sign(6.0) # Returns 1
sign(NAN) # Returns 0
sign(Vector3(-6.0, 0.0, 6.0)) # Returns (-1, 0, 1)
注意:为提高类型安全性,请使用signf(), signi(), Vector2.sign(), Vector2i.sign(), Vector3.sign(), Vector3i.sign(), Vector4.sign(), 或 Vector4i.sign()。
若x为负值,返回-1;若x为正值,返回1;若x为零值,返回0。对于值为nan的x则返回0.0。
signf(-6.5) # Returns -1.0
signf(0.0) # Returns 0.0
signf(6.5) # Returns 1.0
signf(NAN) # Returns 0.0
若x为负值,返回-1;若x为正值,返回1;若x为零值,返回0。
signi(-6) # Returns -1
signi(0) # Returns 0
signi(6) # Returns 1
返回以弧度表示的角度angle_rad 的正弦值。
sin(0.523599) # Returns 0.5
sin(deg_to_rad(90)) # Returns 1.0
返回x 的双曲正弦值。
var a = log(2.0) # Returns 0.693147
sinh(a) # Returns 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)=3*y^2-2*y^3给出,其中y=(x-from)/(to-from)。
smoothstep(0, 2, -5.0) # Returns 0.0
smoothstep(0, 2, 0.5) # Returns 0.15625
smoothstep(0, 2, 1.0) # Returns 0.5
smoothstep(0, 2, 2.0) # Returns 1.0
与曲线值为-1.6521的ease()相比,smoothstep()返回可能存在的最平滑的曲线,导数没有突然变化。如果您需要执行更高级的过渡,请使用Tween或AnimationPlayer。
Variant snapped(x: Variant, step: Variant) 🔗
返回最接近x的step的倍数。这也可用于将浮点数舍入到任意小数位数。
返回值为与step类型相同的Variant。支持的类型:int、float、Vector2、Vector2i、Vector3、Vector3i、Vector4、Vector4i。
snapped(100, 32) # Returns 96
snapped(3.14159, 0.01) # Returns 3.14
snapped(Vector2(34, 70), Vector2(8, 8)) # Returns (32, 72)
另请参阅ceil(), floor(),以及 round().
注意: 为提高类型安全性,请使用 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) # Returns 32.5
snappedf(3.14159, 0.01) # Returns 3.14
int snappedi(x: float, step: int) 🔗
返回最接近x的step的倍数。
snappedi(53, 16) # Returns 48
snappedi(4096, 100) # Returns 4100
返回非负数x的平方根。
sqrt(9) # Returns 3
sqrt(10.24) # Returns 3.2
sqrt(-1) # Returns NaN
注意: 当x为负时返回NaN ("Not a Number")。在C#中如果你需要输入负值,请使用System.Numerics.Complex。
返回小数点后第一个非零数字的位置。请注意,最大返回值为10,这是实现中的设计决策。
var n = step_decimals(5) # n is 0
n = step_decimals(1.0005) # n is 4
n = step_decimals(0.000000005) # n is 9
以尽可能好的方式将一个或多个任意Variant类型转换为一个String。
var a = [10, 20, 30]
var b = str(a)
print(len(a)) # Prints 3 (the number of elements in the array).
print(len(b)) # Prints 12 (the length of the string "[10, 20, 30]").
Variant str_to_var(string: String) 🔗
将var_to_str()返回的格式化string转换为原始Variant。
var data = '{ "a": 1, "b": 2 }' # data is a String
var dict = str_to_var(data) # dict is a Dictionary
print(dict["a"]) # Prints 1
string data = "{ \"a\": 1, \"b\": 2 }"; // data is a string
var dict = S3.StrToVar(data).Asi3DDictionary(); // dict is a Dictionary
S3.Print(dict["a"]); // Prints 1
返回以弧度表示的角度angle_rad的正切值。
tan(deg_to_rad(45)) # Returns 1
返回x的双曲正切值。
var a = log(2.0) # Returns 0.693147
tanh(a) # Returns 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) # Returns 0
type_convert("123", TYPE_INT) # Returns 123
type_convert(123.4, TYPE_INT) # Returns 123
type_convert(5, TYPE_VECTOR2) # Returns (0, 0)
type_convert("Hi!", TYPE_NIL) # Returns null
String type_string(type: int) 🔗
返回给定type的人类可读名称,使用Variant.Type的值。
print(TYPE_INT) # Prints 2
print(type_string(TYPE_INT)) # Prints "int"
print(type_string(TYPE_STRING)) # Prints "String"
另请参阅typeof()。
int typeof(variable: Variant) 🔗
使用Variant.Type的值,返回给定variable的内部类型。
var json = JSON.new()
json.parse('["a", "b", "c"]')
var result = json.get_data()
if result is Array:
print(result[0]) # Prints "a"
else:
print("Unexpected result!")
另请参阅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) 🔗
将Variantvariable转换为格式化的String,然后使用str_to_var()进行解析。
var a = { "a": 1, "b": 2 }
print(var_to_str(a))
var a = new i3D.Collections.Dictionary { ["a"] = 1, ["b"] = 2 };
S3.Print(S3.VarToStr(a));
Prints:
{
"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之间对value进行循环处理。可用于创建类似循环的行为或无限的表面。
支持int和floatVariant类型。如果任何参数是float,该函数将返回float,否则将返回int。
var a = wrap(4, 5, 10)
# a is 9 (int)
var a = wrap(7, 5, 10)
# a is 7 (int)
var a = wrap(10.5, 5, 10)
# a is 5.5 (float)
float wrapf(value: float, min: float, max: float) 🔗
在min到max之间对浮点值value进行循环处理。可用于创建类似循环的行为或无限的表面。
# Infinite loop between 5.0 and 9.9
value = wrapf(value + 0.1, 5.0, 10.0)
# Infinite rotation (in radians)
angle = wrapf(angle + 0.1, 0.0, TAU)
# Infinite rotation (in radians)
angle = wrapf(angle + 0.1, -PI, PI)
注意:如果min为0,该方法等同于fposmod(),因此推荐用其替代。
wrapf()比使用fposmod()方法更灵活,因为它让用户控制最小值。
int wrapi(value: int, min: int, max: int) 🔗
在min到max之间对整数值value进行循环处理。可用于创建类似循环的行为或无限的表面。
# Infinite loop between 5 and 9
frame = wrapi(frame + 1, 5, 10)
# result is -2
var result = wrapi(-6, -5, -1)