@GlobalScope

全局范围的常量和函数。

描述

全局范围的枚举常量和内置函数的列表。这是所有驻留在全局的,关于错误代码、键码、属性提示等的常量的集合。

单例也被记录在这里,因为它们可以从任何地方被访问。

对于可以在任何脚本中访问的与 GDScript 相关的条目,请参阅 @GDScript

备注

通过 C# 使用该 API 时会有显著不同,详见 C# API 与 GDScript 的差异

教程

属性

AudioServer

AudioServer

CameraServer

CameraServer

ClassDB

ClassDB

DisplayServer

DisplayServer

EditorInterface

EditorInterface

Engine

Engine

EngineDebugger

EngineDebugger

GDExtensionManager

GDExtensionManager

Geometry2D

Geometry2D

Geometry3D

Geometry3D

IP

IP

Input

Input

InputMap

InputMap

JavaClassWrapper

JavaClassWrapper

JavaScriptBridge

JavaScriptBridge

Marshalls

Marshalls

NativeMenu

NativeMenu

NavigationMeshGenerator

NavigationMeshGenerator

NavigationServer2D

NavigationServer2D

NavigationServer3D

NavigationServer3D

OS

OS

Performance

Performance

PhysicsServer2D

PhysicsServer2D

PhysicsServer2DManager

PhysicsServer2DManager

PhysicsServer3D

PhysicsServer3D

PhysicsServer3DManager

PhysicsServer3DManager

ProjectSettings

ProjectSettings

RenderingServer

RenderingServer

ResourceLoader

ResourceLoader

ResourceSaver

ResourceSaver

ResourceUID

ResourceUID

TextServerManager

TextServerManager

ThemeDB

ThemeDB

Time

Time

TranslationServer

TranslationServer

WorkerThreadPool

WorkerThreadPool

XRServer

XRServer

方法

Variant

abs(x: Variant)

float

absf(x: float)

int

absi(x: int)

float

acos(x: float)

float

acosh(x: float)

float

angle_difference(from: float, to: float)

float

asin(x: float)

float

asinh(x: float)

float

atan(x: float)

float

atan2(y: float, x: float)

float

atanh(x: float)

float

bezier_derivative(start: float, control_1: float, control_2: float, end: float, t: float)

float

bezier_interpolate(start: float, control_1: float, control_2: float, end: float, t: float)

Variant

bytes_to_var(bytes: PackedByteArray)

Variant

bytes_to_var_with_objects(bytes: PackedByteArray)

Variant

ceil(x: Variant)

float

ceilf(x: float)

int

ceili(x: float)

Variant

clamp(value: Variant, min: Variant, max: Variant)

float

clampf(value: float, min: float, max: float)

int

clampi(value: int, min: int, max: int)

float

cos(angle_rad: float)

float

cosh(x: float)

float

cubic_interpolate(from: float, to: float, pre: float, post: float, weight: float)

float

cubic_interpolate_angle(from: float, to: float, pre: float, post: float, weight: float)

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)

float

cubic_interpolate_in_time(from: float, to: float, pre: float, post: float, weight: float, to_t: float, pre_t: float, post_t: float)

float

db_to_linear(db: float)

float

deg_to_rad(deg: float)

float

ease(x: float, curve: float)

String

error_string(error: int)

float

exp(x: float)

Variant

floor(x: Variant)

float

floorf(x: float)

int

floori(x: float)

float

fmod(x: float, y: float)

float

fposmod(x: float, y: float)

int

hash(variable: Variant)

Object

instance_from_id(instance_id: int)

float

inverse_lerp(from: float, to: float, weight: float)

bool

is_equal_approx(a: float, b: float)

bool

is_finite(x: float)

bool

is_inf(x: float)

bool

is_instance_id_valid(id: int)

bool

is_instance_valid(instance: Variant)

bool

is_nan(x: float)

bool

is_same(a: Variant, b: Variant)

bool

is_zero_approx(x: float)

Variant

lerp(from: Variant, to: Variant, weight: Variant)

float

lerp_angle(from: float, to: float, weight: float)

float

lerpf(from: float, to: float, weight: float)

float

linear_to_db(lin: float)

float

log(x: float)

Variant

max(…) vararg

float

maxf(a: float, b: float)

int

maxi(a: int, b: int)

Variant

min(…) vararg

float

minf(a: float, b: float)

int

mini(a: int, b: int)

float

move_toward(from: float, to: float, delta: float)

int

nearest_po2(value: int)

float

pingpong(value: float, length: float)

int

posmod(x: int, y: int)

float

pow(base: float, exp: float)

void

print(…) vararg

void

print_rich(…) vararg

void

print_verbose(…) vararg

void

printerr(…) vararg

void

printraw(…) vararg

void

prints(…) vararg

void

printt(…) vararg

void

push_error(…) vararg

void

push_warning(…) vararg

float

rad_to_deg(rad: float)

PackedInt64Array

rand_from_seed(seed: int)

float

randf()

float

randf_range(from: float, to: float)

float

randfn(mean: float, deviation: float)

int

randi()

int

randi_range(from: int, to: int)

void

randomize()

float

remap(value: float, istart: float, istop: float, ostart: float, ostop: float)

int

rid_allocate_id()

RID

rid_from_int64(base: int)

float

rotate_toward(from: float, to: float, delta: float)

Variant

round(x: Variant)

float

roundf(x: float)

int

roundi(x: float)

void

seed(base: int)

Variant

sign(x: Variant)

float

signf(x: float)

int

signi(x: int)

float

sin(angle_rad: float)

float

sinh(x: float)

float

smoothstep(from: float, to: float, x: float)

Variant

snapped(x: Variant, step: Variant)

float

snappedf(x: float, step: float)

int

snappedi(x: float, step: int)

float

sqrt(x: float)

int

step_decimals(x: float)

String

str(…) vararg

Variant

str_to_var(string: String)

float

tan(angle_rad: float)

float

tanh(x: float)

Variant

type_convert(variant: Variant, type: int)

String

type_string(type: int)

int

typeof(variable: Variant)

PackedByteArray

var_to_bytes(variable: Variant)

PackedByteArray

var_to_bytes_with_objects(variable: Variant)

String

var_to_str(variable: Variant)

Variant

weakref(obj: Variant)

Variant

wrap(value: Variant, min: Variant, max: Variant)

float

wrapf(value: float, min: float, max: float)

int

wrapi(value: int, min: int, max: int)


枚举

enum Side: 🔗

Side SIDE_LEFT = 0

左边,常用于 ControlStyleBox 的派生类。

Side SIDE_TOP = 1

顶边,常用于 ControlStyleBox 的派生类。

Side SIDE_RIGHT = 2

右边,常用于 ControlStyleBox 的派生类。

Side SIDE_BOTTOM = 3

底边,常用于 ControlStyleBox 的派生类。


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

通用垂直对齐,常用于 SeparatorScrollBarSlider 等。

Orientation HORIZONTAL = 0

通用水平对齐,常用于 SeparatorScrollBarSlider 等。


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_MENU = 4194370

上下文菜单键。

Key KEY_HYPER = 4194371

超级键。(仅在 Linux/X11 上)。

Key KEY_HELP = 4194373

Help 键。

Key KEY_BACK = 4194376

媒体返回键。不要与 Android 设备上的返回键相混淆。

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

[ 键。

Key KEY_BACKSLASH = 92

\ 键。

Key KEY_BRACKETRIGHT = 93

] 键。

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

修饰键掩码。

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

用于仅出现一次的键,或者当比较不需要区分 LEFTRIGHT 版本时。

例如,当使用 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 个按钮。

  • WindowsmacOS:最多 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

返回 Error 的方法会在没有错误发生时返回 OK

由于 OK 的值为 0,并且所有其他错误常数都是正整数,因此返回值也可以用于布尔检查。

示例:

  1. var error = method_that_returns_error()
  2. if error != OK:
  3. printerr("Failure!")
  4. # 或者,等价于:
  5. if error:
  6. printerr("Still failing!")

注意:许多函数不返回错误代码,但会将错误信息打印到标准输出。

Error FAILED = 1

一般性错误。

Error ERR_UNAVAILABLE = 2

不可用的错误。

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

提示 intfloat 属性应在提示字符串 "最小值,最大值""最小值,最大值,步长" 指定的范围内。提示字符串可以选择包含 "or_greater" 和/或 "or_less",从而允许手动输入高于最大值或低于最小值的值。

示例:"-360,360,1,or_greater,or_less"

此外,还可以包含其他关键字:"exp" 用于指数范围编辑,"radians_as_degrees" 用于以度数编辑弧度角(范围的取值也使用度数),"degrees" 提示角度,"hide_slider" 则会隐藏滑块。

PropertyHint PROPERTY_HINT_ENUM = 2

提示 intString 属性是枚举值,可通过提示字符串在指定的列表中选取。

该提示字符串是逗号分隔的名称列表,例如 "Hello,Something,Else"不会从名称的任何一端删除空格。对于整数属性,列表中的第一个名称的值为 0,下一个名称的值为 1,依此类推。也可以通过将 :integer 附加到名称来显式指定值,例如 "Zero,One,Three:3,Four,Six:6"

PropertyHint PROPERTY_HINT_ENUM_SUGGESTION = 3

提示 String 属性为枚举值,可以通过提示字符串在指定的列表中选取,例如 "Hello,Something,Else"

PROPERTY_HINT_ENUM 不同,具有该提示的属性仍然接受任意值并且可以为空。值列表用于建议可能的值。

PropertyHint PROPERTY_HINT_EXP_EASING = 4

提示应通过指数缓动函数编辑 float 属性。提示字符串可以包括 "attenuation" 以水平翻转曲线,和/或 "positive_only" 以排除 in/out 缓动并限制值大于或等于零。

PropertyHint PROPERTY_HINT_LINK = 5

提示向量属性应该允许分量链接。例如,这能够让 Vector2.xVector2.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 物理层。

PropertyHint PROPERTY_HINT_LAYERS_2D_NAVIGATION = 9

提示 int 属性为位掩码,表示可命名的 2D 导航层。

PropertyHint PROPERTY_HINT_LAYERS_3D_RENDER = 10

提示 int 属性为位掩码,表示可命名的 3D 渲染层。

PropertyHint PROPERTY_HINT_LAYERS_3D_PHYSICS = 11

提示 int 属性为位掩码,表示可命名的 3D 物理层。

PropertyHint PROPERTY_HINT_LAYERS_3D_NAVIGATION = 12

提示 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 必须使用 ":""/" 对内嵌的类型进行编码。

GDScriptC#

  1. # elem_type 数组。
  2. hint_string = "%d:" % [elem_type]
  3. hint_string = "%d/%d:%s" % [elem_type, elem_hint, elem_hint_string]
  4. # elem_type 二维数组(elem_type 数组的数组)。
  5. hint_string = "%d:%d:" % [TYPE_ARRAY, elem_type]
  6. hint_string = "%d:%d/%d:%s" % [TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
  7. # elem_type 三维数组(elem_type 数组的数组的数组)。
  8. hint_string = "%d:%d:%d:" % [TYPE_ARRAY, TYPE_ARRAY, elem_type]
  9. hint_string = "%d:%d:%d/%d:%s" % [TYPE_ARRAY, TYPE_ARRAY, elem_type, elem_hint, elem_hint_string]
  1. // elem_type 数组。
  2. hintString = $"{elemType:D}:";
  3. hintString = $"{elemType:}/{elemHint:D}:{elemHintString}";
  4. // elem_type 二维数组(elem_type 数组的数组)。
  5. hintString = $"{Variant.Type.Array:D}:{elemType:D}:";
  6. hintString = $"{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";
  7. // elem_type 三维数组(elem_type 数组的数组的数组)。
  8. hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}:";
  9. hintString = $"{Variant.Type.Array:D}:{Variant.Type.Array:D}:{elemType:D}/{elemHint:D}:{elemHintString}";

示例:

GDScriptC#

  1. hint_string = "%d:" % [TYPE_INT] # 整数数组。
  2. hint_string = "%d/%d:1,10,1" % [TYPE_INT, PROPERTY_HINT_RANGE] # 整数数组(范围为 1 到 10)。
  3. hint_string = "%d/%d:Zero,One,Two" % [TYPE_INT, PROPERTY_HINT_ENUM] # 整数数组(枚举)。
  4. hint_string = "%d/%d:Zero,One,Three:3,Six:6" % [TYPE_INT, PROPERTY_HINT_ENUM] # 整数数组(枚举)。
  5. hint_string = "%d/%d:*.png" % [TYPE_STRING, PROPERTY_HINT_FILE] # 字符串数组(文件路径)。
  6. hint_string = "%d/%d:Texture2D" % [TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # 纹理数组。
  7. hint_string = "%d:%d:" % [TYPE_ARRAY, TYPE_FLOAT] # 浮点数二维数组。
  8. hint_string = "%d:%d/%d:" % [TYPE_ARRAY, TYPE_STRING, PROPERTY_HINT_MULTILINE_TEXT] # 多行字符串二维数组。
  9. hint_string = "%d:%d/%d:-1,1,0.1" % [TYPE_ARRAY, TYPE_FLOAT, PROPERTY_HINT_RANGE] # 浮点数二维数组(范围为 -1 到 1)。
  10. hint_string = "%d:%d/%d:Texture2D" % [TYPE_ARRAY, TYPE_OBJECT, PROPERTY_HINT_RESOURCE_TYPE] # 纹理二维数组。
  1. hintString = $"{Variant.Type.Int:D}/{PropertyHint.Range:D}:1,10,1"; // 整数数组(范围为 1 到 10)。
  2. hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Two"; // 整数数组(枚举)。
  3. hintString = $"{Variant.Type.Int:D}/{PropertyHint.Enum:D}:Zero,One,Three:3,Six:6"; // 整数数组(枚举)。
  4. hintString = $"{Variant.Type.String:D}/{PropertyHint.File:D}:*.png"; // 字符串数组(文件路径)。
  5. hintString = $"{Variant.Type.Object:D}/{PropertyHint.ResourceType:D}:Texture2D"; // 纹理数组。
  6. hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}:"; // 浮点数二维数组。
  7. hintString = $"{Variant.Type.Array:D}:{Variant.Type.String:D}/{PropertyHint.MultilineText:D}:"; // 多行字符串二维数组。
  8. hintString = $"{Variant.Type.Array:D}:{Variant.Type.Float:D}/{PropertyHint.Range:D}:-1,1,0.1"; // 浮点数二维数组(范围为 -1 到 1)。
  9. 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,其存储类型在提示字符串中指定。

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_MAX = 38

代表 PropertyHint 枚举的大小。


flags PropertyUsageFlags: 🔗

PropertyUsageFlags PROPERTY_USAGE_NONE = 0

该属性不被存储,也不会显示在编辑器中。这是非导出属性的默认值。

PropertyUsageFlags PROPERTY_USAGE_STORAGE = 2

The property is serialized and saved in the scene file (default for exported properties).

PropertyUsageFlags PROPERTY_USAGE_EDITOR = 4

The property is shown in the EditorInspector (default for exported properties).

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

该属性是一个脚本变量,应该被序列化并保存在场景文件中。

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

该属性为数组。

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

只有在支持现代渲染器(不包含 GLES3)的情况下该属性才会在编辑器中显示。

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_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 ClassDB 🔗

ClassDB 单例。


DisplayServer DisplayServer 🔗

DisplayServer 单例。


EditorInterface EditorInterface 🔗

EditorInterface 单例。

注意:仅在编辑器构建中可用。


Engine Engine 🔗

Engine 单例。


EngineDebugger EngineDebugger 🔗

EngineDebugger 单例。


GDExtensionManager GDExtensionManager 🔗

GDExtensionManager 单例。


Geometry2D Geometry2D 🔗

Geometry2D 单例。


Geometry3D Geometry3D 🔗

Geometry3D 单例。


IP IP 🔗

IP 单例。


Input Input 🔗

Input 单例。


InputMap InputMap 🔗

InputMap 单例。


JavaClassWrapper JavaClassWrapper 🔗

JavaClassWrapper 单例。

注意:仅在 Android 上实现。


JavaScriptBridge JavaScriptBridge 🔗

JavaScriptBridge 单例。

注意:仅在 Web 平台上实现。


Marshalls Marshalls 🔗

Marshalls 单例。


NativeMenu NativeMenu 🔗

NativeMenu 单例。

注意:仅在 macOS 上实现。


NavigationMeshGenerator NavigationMeshGenerator 🔗

NavigationMeshGenerator 单例。


NavigationServer2D NavigationServer2D 🔗

NavigationServer2D 单例。


NavigationServer3D NavigationServer3D 🔗

NavigationServer3D 单例。


OS OS 🔗

OS 单例。


Performance Performance 🔗

Performance 单例。


PhysicsServer2D PhysicsServer2D 🔗

PhysicsServer2D 单例。


PhysicsServer2DManager PhysicsServer2DManager 🔗

PhysicsServer2DManager 单例。


PhysicsServer3D PhysicsServer3D 🔗

PhysicsServer3D 单例。


PhysicsServer3DManager PhysicsServer3DManager 🔗

PhysicsServer3DManager 单例。


ProjectSettings ProjectSettings 🔗

ProjectSettings 单例。


RenderingServer RenderingServer 🔗

RenderingServer 单例。


ResourceLoader ResourceLoader 🔗

ResourceLoader 单例。


ResourceSaver ResourceSaver 🔗

ResourceSaver 单例。


ResourceUID ResourceUID 🔗

ResourceUID 单例。


TextServerManager TextServerManager 🔗

TextServerManager 单例。


ThemeDB ThemeDB 🔗

ThemeDB 单例。


Time Time 🔗

Time 单例。


TranslationServer TranslationServer 🔗

TranslationServer 单例。


WorkerThreadPool WorkerThreadPool 🔗

WorkerThreadPool 单例。


XRServer XRServer 🔗

XRServer 单例。


方法说明

Variant abs(x: Variant) 🔗

返回一个 Variant 类型参数 x 的绝对值(即非负值)。支持的类型:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. var a = abs(-1)
  2. # a=1
  3. var b = abs(-1.2)
  4. # b=1.2
  5. var c = abs(Vector2(-3.5, -4))
  6. # c=(3.5, 4)
  7. var d = abs(Vector2i(-5, -6))
  8. # d=(5, 6)
  9. var e = abs(Vector3(-7, 8.5, -3.8))
  10. # e=(7, 8.5, 3.8)
  11. var f = abs(Vector3i(-7, -8, -9))
  12. # f=(7, 8, 9)

注意:为了更好的类型安全,请使用 absfabsiVector2.absVector2i.absVector3.absVector3i.absVector4.absVector4i.abs


float absf(x: float) 🔗

返回浮点参数 x 的绝对值(即正值)。

  1. # a=1.2
  2. var a = absf(-1.2)

int absi(x: int) 🔗

返回整数参数 x 的绝对值(即正值)。

  1. # a=1
  2. var a = absi(-1)

float acos(x: float) 🔗

返回 x 的反余弦,单位为弧度。用来获取余弦 x 的角度。x 会被钳制在 -1.01.0(包括)之间,因此 acos 不会返回 @GDScript.NAN

  1. # 如果用 rad_to_deg(c) 转换,c为0.523599或30度
  2. var c = acos(0.866025)

float acosh(x: float) 🔗

返回 x 的反双曲余弦值,返回值为弧度。使用它来获取在双曲空间中,如果 x 大于或等于 1,角的余弦的角度。对于 x 小于 1 的值,将返回 0,以防止 acosh 返回 @GDScript.NAN

  1. var a = acosh(2) # 返回 1.31695789692482
  2. cosh(a) # 返回 2
  3. var b = acosh(-1) # 返回 0

float angle_difference(from: float, to: float) 🔗

返回两个角度之间的差,范围为 [-PI, +PI] 。当 fromto 相反时,如果 from 小于 to,则返回 -PI ,否则返回 PI


float asin(x: float) 🔗

返回 x 的反正弦值,单位为弧度。用来获取正弦 x 的角度。x 会被钳制在 -1.01.0(包括)之间,因此 asin 不会返回 @GDScript.NAN

  1. # 如果用 rad_to_deg(s) 转换,s为0.523599或30度
  2. var s = asin(0.5)

float asinh(x: float) 🔗

返回 x 的反双曲正弦值,返回值为弧度。使用它来获取在双曲空间中,角的正弦角度。

  1. var a = asinh(0.9) # 返回 0.8088669356527824
  2. sinh(a) # 返回 0.9

float atan(x: float) 🔗

返回 x 的反正切值,单位为弧度。在三角函数中用它来得到一个角上切线的角度。

该方法无法确定角度应该落在哪个象限。如果你同时拥有 yx,请参见 atan2

  1. var a = atan(0.5) # a=0.463648

如果 x-PI/2PI/2(包括)之间,atan(tan(x)) 等于 x


float atan2(y: float, x: float) 🔗

返回 y/x 的反正切值,单位为弧度。用来获得正切值为 y/x 的角度。为了计算该值,该方法考虑了两个参数的符号,以确定象限。

重要提示:按照惯例,Y 坐标在前。

  1. var a = atan2(0, -1) # a = 3.141593

float atanh(x: float) 🔗

返回 x 的反双曲正切值,返回值为弧度。如果 x 在 -1 和 1 之间(不包括 -1 和 1),则使用它从双曲空间中的角度的正切值获取角度。

在数学中,只有在实数集中,-1 < x < 1 的情况下,双曲反正切才有意义。因此,为了预防 atanh 返回 @GDScript.NAN,对于 x 等于或小于 -1 的值,返回负的 @GDScript.NAN;对于 x等于或大于 1 的值,返回正的 @GDScript.INF

  1. var a = atanh(0.9) # 返回 1.47221948958322
  2. tanh(a) # 返回 0.9
  3. var b = atanh(-2) # 返回 -inf
  4. tanh(b) # 返回 -1

float bezier_derivative(start: float, control_1: float, control_2: float, end: float, t: float) 🔗

返回由给定的 control_1control_2end 点定义的一维贝塞尔曲线t 处的导数。


float bezier_interpolate(start: float, control_1: float, control_2: float, end: float, t: float) 🔗

返回由给定的 control_1control_2end 点定义的一维贝塞尔曲线上位于给定 t 的点。


Variant bytes_to_var(bytes: PackedByteArray) 🔗

将字节数组解码回 Variant 值,无法解码对象。

注意:如果需要对象反序列化,请参见 bytes_to_var_with_objects


Variant bytes_to_var_with_objects(bytes: PackedByteArray) 🔗

将字节数组解码回 Variant 值。允许解码对象。

警告:反序列化的对象可能包含执行的代码。如果序列化对象的来源不受信任,则不要使用此选项,以避免潜在的安全威胁(远程执行代码)。


Variant ceil(x: Variant) 🔗

向上舍入 x(朝正无穷大方向),返回不小于 x 的最小整数。支持的类型:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. var i = ceil(1.45) # i 为 2.0
  2. i = ceil(1.001) # i 为 2.0

另见 floorroundsnapped

注意:为了更好的类型安全,使用 ceilfceiliVector2.ceilVector3.ceilVector4.ceil


float ceilf(x: float) 🔗

向上舍入 x(朝正无穷大),返回不小于 x 的最小整数。

ceil 的类型安全版本,返回一个 float


int ceili(x: float) 🔗

向上舍入 x(朝正无穷大),返回不小于 x 的最小整数。

ceil 的类型安全版本,返回一个 int


Variant clamp(value: Variant, min: Variant, max: Variant) 🔗

钳制 value,返回不小于 min 且不大于 maxVariant。任何能够用小于和大于运算符进行比较的值都能工作。

  1. var a = clamp(-10, -1, 5)
  2. # a 是 -1
  3. var b = clamp(8.1, 0.9, 5.5)
  4. # b 是 5.5

注意:为了更好的类型安全,请使用 clampfclampiVector2.clampVector2i.clampVector3.clampVector3i.clampVector4.clampVector4i.clampColor.clamp(该方法当前不受支持)。

注意:当在向量上使用该函数时,它会执行逐分量钳制,并且如果 value < min 则结果为 min,如果 value > max 则为 max。要执行逐分量钳制,请使用上面列出的方法。


float clampf(value: float, min: float, max: float) 🔗

钳制 value,返回不小于 min 且不大于 maxfloat

  1. var speed = 42.1
  2. var a = clampf(speed, 1.0, 20.5) # a 是 20.5
  3. speed = -10.0
  4. var b = clampf(speed, -1.0, 1.0) # b 是 -1.0

int clampi(value: int, min: int, max: int) 🔗

钳制 value,返回不小于 min 且不大于 maxint

  1. var speed = 42
  2. var a = clampi(speed, 1, 20) # a 是 20
  3. speed = -10
  4. var b = clampi(speed, -1, 1) # b 是 -1

float cos(angle_rad: float) 🔗

返回弧度角为 angle_rad 的余弦值。

  1. cos(PI * 2) # 返回 1.0
  2. cos(PI) # 返回 -1.0
  3. cos(deg_to_rad(90)) # 返回 0.0

float cosh(x: float) 🔗

返回弧度角 x 的双曲余弦值。

  1. print(cosh(1)) # 打印 1.543081

float cubic_interpolate(from: float, to: float, pre: float, post: float, weight: float) 🔗

根据 weight 定义的系数,以及 prepost 值,在两个值之间进行三次插值。


float cubic_interpolate_angle(from: float, to: float, pre: float, post: float, weight: float) 🔗

根据 weight 定义的系数,以及 prepost 值,在两个旋转值之间的最短路径进行三次插值 。另见 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 定义的系数,以及 prepost 值,在两个旋转值之间的最短路径进行三次插值。另见 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 定义的系数,以及 prepost 值,在两个值之间进行三次插值。

它可以根据时间值执行比 cubic_interpolate 更平滑的插值。


float db_to_linear(db: float) 🔗

将分贝值转换为线性能量(音频)值。


float deg_to_rad(deg: float) 🔗

将角度值转换为弧度值。

  1. var r = deg_to_rad(180) # r 是 3.141593

float ease(x: float, curve: float) 🔗

基于用 curve 定义的缓动函数返回 x “缓动后”的值,该缓动函数是基于指数的缓动。curve 可以是任意浮点数,具体数值会导致以下行为:

  1. - 低于 -1.0(开区间):缓入缓出
  2. - -1.0:线性
  3. - -1.0 0.0 之间(开区间):缓出缓入
  4. - 0.0:恒定
  5. - 0.0 1.0 之间(开区间):缓出
  6. - 1.0:线性
  7. - 大于 1.0(开区间):缓入

ease() 曲线值速查表

另见 smoothstep。如果你需要执行更高级的过渡,请使用 Tween.interpolate_value


String error_string(error: int) 🔗

为给定的 Error 代码返回一个人类可读的名称。

  1. print(OK) # 输出 0
  2. print(error_string(OK)) # 输出 OK
  3. print(error_string(ERR_BUSY)) # 输出 Busy
  4. print(error_string(ERR_OUT_OF_MEMORY)) # 输出 Out of memory

float exp(x: float) 🔗

自然指数函数。计算数学常数 ex 次方并返回它。

e 的近似值为 2.71828,可以使用 exp(1) 获得。

求其他底数的指数应使用 pow 方法。

  1. var a = exp(2) # 大约是 7.39

Variant floor(x: Variant) 🔗

向下舍入 x(朝负无穷大),返回不大于 x 的最大整数。支持的类型:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. var a = floor(2.99) # a 为 2.0
  2. a = floor(-2.99) # a 为 -3.0

另见 ceilroundsnapped

注意:为了更好的类型安全,请使用 floorfflooriVector2.floorVector3.floorVector4.floor


float floorf(x: float) 🔗

x 向下舍入(向负无穷大),返回不超过 x 的最大整数。

一个类型安全的 floor 版本,返回一个 float


int floori(x: float) 🔗

x 向下舍入(向负无穷大),返回不超过 x 的最大整数。

floor 的类型安全版本,返回一个 int

注意:这个函数与 int(x) 一样,后者是向 0 取整。


float fmod(x: float, y: float) 🔗

返回 x 除以 y 的浮点型余数,符号与 x一致。

  1. var remainder = fmod(7, 5.5) # remainder 是 1.5

对于整数取余运算,请使用 % 运算符。


float fposmod(x: float, y: float) 🔗

返回 x 除以 y 的浮点模数,对正负数进行一致的循环。

  1. print(" (x) (fmod(x, 1.5)) (fposmod(x, 1.5))")
  2. for i in 7:
  3. var x = i * 0.5 - 1.5
  4. print("%4.1f %4.1f | %4.1f" % [x, fmod(x, 1.5), fposmod(x, 1.5)])

输出:

  1. (x) (fmod(x, 1.5)) (fposmod(x, 1.5))
  2. -1.5 -0.0 | 0.0
  3. -1.0 -1.0 | 0.5
  4. -0.5 -0.5 | 1.0
  5. 0.0 0.0 | 0.0
  6. 0.5 0.5 | 0.5
  7. 1.0 1.0 | 1.0
  8. 1.5 0.0 | 0.0

int hash(variable: Variant) 🔗

返回传入的 variable 的整数哈希值。

GDScriptC#

  1. print(hash("a")) # 输出 177670
  1. GD.Print(GD.Hash("a")); // 输出 177670

Object instance_from_id(instance_id: int) 🔗

返回 instance_id 所对应的 Object。所有对象都有唯一的实例 ID。参见 Object.get_instance_id

GDScriptC#

  1. var foo = "bar"
  2. func _ready():
  3. var id = get_instance_id()
  4. var inst = instance_from_id(id)
  5. print(inst.foo) # 输出 bar
  1. public partial class MyNode : Node
  2. {
  3. public string Foo { get; set; } = "bar";
  4. public override void _Ready()
  5. {
  6. ulong id = GetInstanceId();
  7. var inst = (MyNode)InstanceFromId(Id);
  8. GD.Print(inst.Foo); // 输出 bar
  9. }
  10. }

float inverse_lerp(from: float, to: float, weight: float) 🔗

返回插值或外推的因子。范围用 fromto指定,插值后的值由 weight 指定。如果 weightfromto 之间(包含),那么返回的值在 0.01.0 之间。如果 weight 在该范围之外,则返回的是外推因子(返回值小于 0.0 或大于 1.0)。如果不希望这样,请对 inverse_lerp 的结果使用 clamp

  1. # 下面的 `lerp()` 调用时的插值比例是 0.75。
  2. var middle = lerp(20, 30, 0.75)
  3. # middle 现在是 27.5。
  4. # 现在,我们假装忘记了原来的比例,想要找到是多少。
  5. var ratio = inverse_lerp(20, 30, 27.5)
  6. # ratio 现在是 0.75。

另见 lerp,它执行本操作的逆操作;以及 remap,将一系列连续的值映射到另一个值。


bool is_equal_approx(a: float, b: float) 🔗

如果 ab 彼此近似相等,则返回 true

这里,“近似相等”意味着 ab 在彼此的一个小的内部 epsilon 内,该 epsilon 与数字的大小成比例。

相同符号的无穷大值被认为是相等的。


bool is_finite(x: float) 🔗

返回 x 是否为有限值,即不是 @GDScript.NAN、正无穷大或负无穷大。


bool is_inf(x: float) 🔗

如果 x 是正无穷大或负无穷大,则返回 true


bool is_instance_id_valid(id: int) 🔗

如果与 id 对应的 Object 是有效的对象(例如没有从内存中删除),则返回 true 。所有对象都有唯一的实例 ID。


bool is_instance_valid(instance: Variant) 🔗

如果 instance 是有效的 Object(例如,没有从内存中删除),则返回 true


bool is_nan(x: float) 🔗

如果 x 是 NaN(“非数字”或无效)值,则返回 true


bool is_same(a: Variant, b: Variant) 🔗

ab 为值类型时,如果他们相同,那么返回 true。当 ab 为引用类型时,如果它们的引用对象相同,那么返回 true

  1. # Vector2 是值类型
  2. var vec2_a = Vector2(0, 0)
  3. var vec2_b = Vector2(0, 0)
  4. var vec2_c = Vector2(1, 1)
  5. is_same(vec2_a, vec2_a) # true
  6. is_same(vec2_a, vec2_b) # true
  7. is_same(vec2_a, vec2_c) # false
  8. # Array 是引用类型
  9. var arr_a = []
  10. var arr_b = []
  11. is_same(arr_a, arr_a) # true
  12. is_same(arr_a, arr_b) # false

值类型的 Variant 有:nullboolintfloatStringStringNameVector2Vector2iVector3Vector3iVector4Vector4iRect2Rect2iTransform2DTransform3DPlaneQuaternionAABBBasisProjectionColorNodePathRIDCallableSignal

引用类型的 Variant 有:ObjectDictionaryArrayPackedByteArrayPackedInt32ArrayPackedInt64ArrayPackedFloat32ArrayPackedFloat64ArrayPackedStringArrayPackedVector2ArrayPackedVector3ArrayPackedVector4ArrayPackedColorArray


bool is_zero_approx(x: float) 🔗

如果 x 为零或几乎为零,则返回 true。比较是使用具有小内部 epsilon 的公差计算的。

该函数比使用一个值为零的 is_equal_approx 更快。


Variant lerp(from: Variant, to: Variant, weight: Variant) 🔗

通过 weight 中定义的因子在两个值之间进行线性插值。要执行插值,weight 应介于 0.01.0 之间(包含)。但是,超出此范围的值也是允许的,并可用于执行外推。如果不需要,请在该函数的结果上使用 clamp

fromto 必须是同一类型。支持的类型:intfloatVector2Vector3Vector4ColorQuaternionBasis

  1. lerp(0, 4, 0.75) # 返回 3.0

另请参阅执行本操作的逆操作的 inverse_lerp。要使用 lerp 执行缓动插值,请将其与 easesmoothstep 结合使用。另见 remap,可将一系列连续的值映射到另一个值。

注意:为了更好的类型安全,请使用 lerpfVector2.lerpVector3.lerpVector4.lerpColor.lerpQuaternion.slerpBasis.slerp


float lerp_angle(from: float, to: float, weight: float) 🔗

通过 0.0 和 1.0 之间的 weight 值,在两个角度(以弧度为单位)之间进行线性插值。

类似于 lerp,但当角度环绕 @GDScript.TAU 时会正确插值。要使用 lerp_angle 执行缓动插值,请将其与 easesmoothstep 结合使用。

  1. extends Sprite
  2. var elapsed = 0.0
  3. func _process(delta):
  4. var min_angle = deg_to_rad(0.0)
  5. var max_angle = deg_to_rad(90.0)
  6. rotation = lerp_angle(min_angle, max_angle, elapsed)
  7. elapsed += delta

注意:该函数通过 fromto 之间的最短路径进行插值。然而,当这两个角度相距大致 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.01.0 之间(包含)。但是,超出此范围的值是允许的,并可用于执行 外推。如果不需要,请对此函数的结果使用 clampf

  1. lerpf(0, 4, 0.75) # 返回 3.0

另请参阅执行本操作的逆运算的 inverse_lerp。要使用 lerp 执行缓动插值,请将其与 easesmoothstep 结合使用。


float linear_to_db(lin: float) 🔗

从线性能量转换为分贝(音频)。这可用于实现按预期运行的音量滑块(因为音量不是线性的)。

示例:

  1. # “Slider”引用的是 HSlider、VSlider 等继承自 Range 的节点。
  2. # 必须将其范围配置为 0 到 1。
  3. # 如果只想修改特定总线的音量,请修改总线名称。
  4. AudioServer.set_bus_volume_db(AudioServer.get_bus_index("Master"), linear_to_db($Slider.value))

float log(x: float) 🔗

返回 x自然对数(底数为 [i]e[/i]),e 约为 2.71828)。这是持续增长到一定程度所需的时间。

注意:这个函数与大多数计算器上的对数“log”函数不同,他们适用的底数是 10。要使用底数为 10 的对数,请使用 log(x) / log(10)

  1. log(10) # 返回 2.302585

注意:0 的对数返回 -inf,负值返回 -nan


Variant max(…) vararg 🔗

返回给定数值中的最大值。该函数可以接受任意数量的参数。

  1. max(1, 7, 3, -6, 5) # 返回 7

注意:对向量使用时不会针对分量求最大值,选取最大值时只会使用 x < y 进行比较。要求分量中的最大值,请使用 Vector2.minVector2i.minVector3.minVector3i.minVector4.minVector4i.min


float maxf(a: float, b: float) 🔗

返回两个 float 值中的最大值。

  1. maxf(3.6, 24) # 返回 24.0
  2. maxf(-3.99, -4) # 返回 -3.99

int maxi(a: int, b: int) 🔗

返回两个 int 值中的最大值。

  1. maxi(1, 2) # 返回 2
  2. maxi(-3, -4) # 返回 -3

Variant min(…) vararg 🔗

返回给定数值中的最小值。该函数可以接受任意数量的参数。

  1. min(1, 7, 3, -6, 5) # 返回 -6

注意:对向量使用时不会针对分量求最小值,选取最小值时只会使用 x < y 进行比较。要求分量中的最小值,请使用 Vector2.minVector2i.minVector3.minVector3i.minVector4.minVector4i.min


float minf(a: float, b: float) 🔗

返回两个 float 值中的最小值。

  1. minf(3.6, 24) # 返回 3.6
  2. minf(-3.99, -4) # 返回 -4.0

int mini(a: int, b: int) 🔗

返回两个 int 值中的最小值。

  1. mini(1, 2) # 返回 1
  2. mini(-3, -4) # 返回 -4

float move_toward(from: float, to: float, delta: float) 🔗

fromto 移动,移动的长度是 delta。不会超过 to

使用负的 delta 值则向远离的方向移动。

  1. move_toward(5, 10, 4) # Returns 9
  2. move_toward(10, 5, 4) # Returns 6
  3. move_toward(5, 10, 9) # Returns 10
  4. move_toward(10, 5, -1.5) # Returns 11.5

int nearest_po2(value: int) 🔗

返回大于等于 value 的最小的 2 的幂。

  1. nearest_po2(3) # 返回 4
  2. nearest_po2(4) # 返回 4
  3. nearest_po2(5) # 返回 8
  4. nearest_po2(0) # 返回 0(可能出乎意料)
  5. nearest_po2(-1) # 返回 0(可能出乎意料)

警告:由于其实现方式,该函数会对小于等于 0 的值返回 0 而不是 1,例外是 value 为最小的负 64 位整数(-9223372036854775808)时,会将 value 原样返回。


float pingpong(value: float, length: float) 🔗

value 包裹在 0length 之间。如果达到限制,函数返回的下一个值将减少到 0 侧或增加到 length 侧(像三角波)。如果 length 小于零,则变为正数。

  1. pingpong(-3.0, 3.0) # 返回 3.0
  2. pingpong(-2.0, 3.0) # 返回 2.0
  3. pingpong(-1.0, 3.0) # 返回 1.0
  4. pingpong(0.0, 3.0) # 返回 0.0
  5. pingpong(1.0, 3.0) # 返回 1.0
  6. pingpong(2.0, 3.0) # 返回 2.0
  7. pingpong(3.0, 3.0) # 返回 3.0
  8. pingpong(4.0, 3.0) # 返回 2.0
  9. pingpong(5.0, 3.0) # 返回 1.0
  10. pingpong(6.0, 3.0) # 返回 0.0

int posmod(x: int, y: int) 🔗

返回 x 除以 y 的整数模数,对正负数进行一致的循环。

  1. print("#(i) (i % 3) (posmod(i, 3))")
  2. for i in range(-3, 4):
  3. print("%2d %2d | %2d" % [i, i % 3, posmod(i, 3)])

结果:

  1. (i) (i % 3) (posmod(i, 3))
  2. -3 0 | 0
  3. -2 -2 | 1
  4. -1 -1 | 2
  5. 0 0 | 0
  6. 1 1 | 1
  7. 2 2 | 2
  8. 3 0 | 0

float pow(base: float, exp: float) 🔗

返回 baseexp 次幂的结果。

在 GDScript 中,这相当于 ** 运算符。

  1. pow(2, 5) # 返回 32.0
  2. pow(4, 1.5) # 返回 8.0

void print(…) vararg 🔗

以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制台。

GDScriptC#

  1. var a = [1, 2, 3]
  2. print("a", "b", a) # 输出 ab[1, 2, 3]
  1. var a = new Godot.Collections.Array { 1, 2, 3 };
  2. GD.Print("a", "b", a); // 输出 ab[1, 2, 3]

注意:请考虑使用 push_errorpush_warning 来打印错误和警告消息,而不是 printprint_rich。这将它们与用于调试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。


void print_rich(…) vararg 🔗

以尽可能最佳的方式将一个或多个任意类型的参数转换为字符串,并将其打印到控制台。

支持以下 BBCode 标签: biusindentcodeurlcenterrightcolorbgcolorfgcolor

颜色标签仅支持以下颜色名称:blackredgreenyellowbluemagentapinkpurplecyanwhiteorangegray。不支持十六进制颜色代码。

URL 标签仅支持在 URL 标签中包含 URL,不支持使用不同标题的 URL。

当打印到标准输出时,支持的 BBCode 子集被转换为 ANSI 转义码以供终端仿真器显示。对 ANSI 转义码的支持可能因终端仿真器而异,尤其是斜体和删除线。在标准输出中,code 会使用较弱的文本表示,但字体不变。不支持的标签在标准输出中会原样保留。

GDScriptC#

  1. print_rich("[color=green][b]Hello world![/b][/color]") # 输出绿色的粗体“Hello world!”
  1. GD.PrintRich("[color=green][b]Hello world![/b][/color]"); // 输出绿色的粗体“Hello world!”

注意:请考虑使用 push_errorpush_warning 来打印错误和警告消息,而不是 printprint_rich。这将它们与用于调试目的的打印消息区分开来,同时还会在打印错误或警告时显示堆栈跟踪。

注意:在 Windows 中,只有 Windows 10 及后续版本能够在标准输出中正确显示 ANSI 转义码。

注意:在编辑器中显示的输出支持可点击的 [url=address]文本[/url] 标签。点击时, [url] 标签的 address 值由 OS.shell_open 处理。


void print_verbose(…) vararg 🔗

如果启用了详细模式(OS.is_stdout_verbose 返回 true),则尽可能以最佳方式将一个或多个任意类型的参数转换为字符串,并将它们打印到控制台。


void printerr(…) vararg 🔗

以尽可能最佳的方式将一个或多个参数作为字符串输出到标准错误行。

GDScriptC#

  1. printerr("prints to stderr")
  1. GD.PrintErr("prints to stderr");

void printraw(…) vararg 🔗

以尽可能最佳的方式将一个或多个参数作为字符串输出到操作系统终端。与 print 不同的是,最后不会自动添加换行符。

注意:操作系统终端与编辑器的“输出”面板不同。从终端运行 Godot 时可以看到发送至操作系统终端的输出。在 Windows 上,需要用到 console.exe 可执行文件。

GDScriptC#

  1. printraw("A")
  2. printraw("B")
  3. printraw("C")
  4. # 输出 ABC 到终端
  1. GD.PrintRaw("A");
  2. GD.PrintRaw("B");
  3. GD.PrintRaw("C");
  4. // 输出 ABC 到终端

void prints(…) vararg 🔗

将一个或多个参数打印到控制台,每个参数之间有一个空格。

GDScriptC#

  1. prints("A", "B", "C") # 输出 A B C
  1. GD.PrintS("A", "B", "C"); // 输出 A B C

void printt(…) vararg 🔗

将一个或多个参数打印到控制台,每个参数之间有一个制表符。

GDScriptC#

  1. printt("A", "B", "C") # 输出 A B C
  1. GD.PrintT("A", "B", "C"); // 输出 A B C

void push_error(…) vararg 🔗

将错误消息推送到 Godot 的内置调试器和 OS 终端。

GDScriptC#

  1. push_error("test error") # 向调试器和终端打印 “test error” 作为错误调用
  1. GD.PushError("test error"); // 向调试器和终端打印 “test error” 作为错误调用

注意:该函数不会暂停项目执行。要在调试版本中打印错误消息并暂停项目执行,请改用 assert(false, "test error")


void push_warning(…) vararg 🔗

将警告消息推送到 Godot 的内置调试器和 OS 终端。

GDScriptC#

  1. push_warning("test warning") # 以警告的形式向调试器和终端输出 “test warning”
  1. GD.PushWarning("test warning"); // 以警告的形式向调试器和终端输出 “test warning”

float rad_to_deg(rad: float) 🔗

将以弧度表示的角度转换为度。

  1. rad_to_deg(0.523599) # 返回 30
  2. rad_to_deg(PI) # 返回 180
  3. rad_to_deg(PI * 2) # 返回 360

PackedInt64Array rand_from_seed(seed: int) 🔗

给定一个 seed,返回一个大小为 2PackedInt64Array,其中第一个元素是随机化的 int 值,第二个元素与 seed 相同。传入相同的 seed 会一致地返回相同的数组。

注意:这里的“种子”是指伪随机数发生器的内部状态,目前实现为一个 64 位整数。

  1. var a = rand_from_seed(4)
  2. print(a[0]) # 输出 2879024997
  3. print(a[1]) # 输出 4

float randf() 🔗

返回 0.01.0(包含)之间的随机浮点值。

GDScriptC#

  1. randf() # 返回示例 0.375671
  1. GD.Randf(); // 返回示例 0.375671

float randf_range(from: float, to: float) 🔗

返回 fromto(包含)之间的随机浮点值。

GDScriptC#

  1. randf_range(0, 20.5) # 返回示例 7.45315
  2. randf_range(-10, 10) # 返回示例 -3.844535
  1. GD.RandRange(0.0, 20.5); // 返回示例 7.45315
  2. GD.RandRange(-10.0, 10.0); // 返回示例 -3.844535

float randfn(mean: float, deviation: float) 🔗

返回一个正态分布的伪随机数,该正态分布具有指定 mean 和标准 deviation。这也被称为高斯分布。

注意:该方法使用 Box-Muller 变换算法。


int randi() 🔗

返回一个随机的无符号 32 位整数。使用余数获得区间 [0, N - 1] (其中 N 小于 2^32)的随机值。

GDScriptC#

  1. randi() # 返回介于 0 到 2^32 - 1 之间的随机整数
  2. randi() % 20 # 返回介于 0 到 19之间的随机整数
  3. randi() % 100 # 返回介于 0 到 99 之间的随机整数
  4. randi() % 100 + 1 # 返回介于 1 到 100 之间的随机整数
  1. GD.Randi(); // 返回介于 0 到 2^32 - 1 之间的随机整数
  2. GD.Randi() % 20; // 返回介于 0 到 19之间的随机整数
  3. GD.Randi() % 100; // 返回介于 0 到 99 之间的随机整数
  4. GD.Randi() % 100 + 1; // 返回介于 1 到 100 之间的随机整数

int randi_range(from: int, to: int) 🔗

返回介于 fromto(包含)之间的一个随机有符号 32 位整数。如果 to 小于 from,则它们将被交换。

GDScriptC#

  1. randi_range(0, 1) # 返回 0 或 1
  2. randi_range(-10, 1000) # 返回介于 -10 和 1000 之间的随机整数
  1. GD.RandRange(0, 1); // 返回 0 或 1
  2. 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]。另见 lerpinverse_lerp。如果 value[istart, istop] 之外,那么结果值也将在 [ostart, ostop] 之外。如果不希望这样,请对该函数的结果使用 clamp

  1. remap(75, 0, 100, -1, 1) # 返回 0.5

对于需要多个范围的复杂用例,请考虑改用 CurveGradient

注意:如果 istart == istop,则返回值未定义(很可能是 NaN、INF 或 -INF)。


int rid_allocate_id() 🔗

分配一个唯一 ID,实现方可以用它来构造 RID。主要由原生扩展使用,用于实现服务器。


RID rid_from_int64(base: int) 🔗

base 创建一个 RID。主要由原生扩展使用,用于构建服务器。


float rotate_toward(from: float, to: float, delta: float) 🔗

fromto 旋转,旋转的量为 delta。不会越过 to

move_toward 类似,但是能够让夹角正确绕过 @GDScript.TAU

如果 delta 为负,则该函数会进行远离 to 的旋转,朝向相反的角度,但不会越过该角度。


Variant round(x: Variant) 🔗

x 舍入到最接近的整数,中间情况远离 0 舍入。支持的类型:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. round(2.4) # 返回 2
  2. round(2.5) # 返回 3
  3. round(2.6) # 返回 3

另见 floorceilsnapped

注意:为了更好的类型安全,使用 roundfroundiVector2.roundVector3.roundVector4.round


float roundf(x: float) 🔗

x 舍入到最接近的整数,中间情况远离 0 舍入。

round 的类型安全版本,返回一个 float


int roundi(x: float) 🔗

x 舍入到最接近的整数,中间情况远离 0 舍入。

round 的类型安全版本,返回一个 int


void seed(base: int) 🔗

将随机数生成器的种子设置为 base。手动设置种子可以确保大多数随机函数的结果一致、可重复。

GDScriptC#

  1. var my_seed = "Godot Rocks".hash()
  2. seed(my_seed)
  3. var a = randf() + randi()
  4. seed(my_seed)
  5. var b = randf() + randi()
  6. # a 和 b 现在是一样的
  1. ulong mySeed = (ulong)GD.Hash("Godot Rocks");
  2. GD.Seed(mySeed);
  3. var a = GD.Randf() + GD.Randi();
  4. GD.Seed(mySeed);
  5. var b = GD.Randf() + GD.Randi();
  6. // a 和 b 现在是一样的

Variant sign(x: Variant) 🔗

返回与 x 相同类型的 Variant,负值返回 -1、正值返回 1,零则返回 0。如果是 nan 则返回 0。

支持的类型有:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. sign(-6.0) # 返回 -1
  2. sign(0.0) # 返回 0
  3. sign(6.0) # 返回 1
  4. sign(NAN) # 返回 0
  5. sign(Vector3(-6.0, 0.0, 6.0)) # 返回 (-1, 0, 1)

注意:为了更好的类型安全,请使用 signfsigniVector2.signVector2i.signVector3.signVector3i.signVector4.signVector4i.sign


float signf(x: float) 🔗

如果 x 为负,则返回 -1.0;如果 x 为正,则返回 1.0;如果 x 为零,则返回 0.0。如果 xnan 则返回 0.0。

  1. signf(-6.5) # 返回 -1.0
  2. signf(0.0) # 返回 0.0
  3. signf(6.5) # 返回 1.0
  4. signf(NAN) # 返回 0.0

int signi(x: int) 🔗

如果 x 为负,则返回 -1;如果 x 为正,则返回 1;如果 x 为零,则返回 0

  1. signi(-6) # 返回 -1
  2. signi(0) # 返回 0
  3. signi(6) # 返回 1

float sin(angle_rad: float) 🔗

返回弧度角 angle_rad 的正弦值。

  1. sin(0.523599) # 返回 0.5
  2. sin(deg_to_rad(90)) # 返回 1.0

float sinh(x: float) 🔗

返回 x 的双曲正弦值。

  1. var a = log(2.0) # 返回 0.693147
  2. sinh(a) # 返回 0.75

float smoothstep(from: float, to: float, x: float) 🔗

返回 x01 之间平滑插值的结果,基于 x 相对于边 fromto 的位置。

如果 x <= from,则返回值为 0;如果 x >= to,则返回值为 1。如果 x 位于 fromto 之间,则返回值遵循一条将 x 映射到 01 之间的 S 形曲线。

这条 S 形曲线是三次 Hermite 插值器,由 f(y) = 3*y^2 - 2*y^3 给出,其中 y = (x-from) / (to-from)

  1. smoothstep(0, 2, -5.0) # 返回 0.0
  2. smoothstep(0, 2, 0.5) # 返回 0.15625
  3. smoothstep(0, 2, 1.0) # 返回 0.5
  4. smoothstep(0, 2, 2.0) # 返回 1.0

与曲线值为 -1.6521ease 相比,smoothstep 返回最平滑的曲线,导数没有突然变化。如果需要执行更高级的过渡,请使用 TweenAnimationPlayer

smoothstep() 与 ease(x, -1.6521) 返回值的比较


Variant snapped(x: Variant, step: Variant) 🔗

返回最接近 xstep 的倍数。这也可用于将一个浮点数四舍五入为任意小数位数。

返回值是与 step 相同类型的 Variant。支持的类型:intfloatVector2Vector2iVector3Vector3iVector4Vector4i

  1. snapped(100, 32) # 返回 96
  2. snapped(3.14159, 0.01) # 返回 3.14
  3. snapped(Vector2(34, 70), Vector2(8, 8)) # 返回 (32, 72)

另见 ceilfloorround

注意:为了更好的类型安全,请使用 snappedfsnappediVector2.snappedVector2i.snappedVector3.snappedVector3i.snappedVector4.snappedVector4i.snapped


float snappedf(x: float, step: float) 🔗

返回最接近 xstep 的倍数。也可用于将浮点数四舍五入为任意的小数位数。

snapped 的类型安全版本,返回一个 float

  1. snappedf(32.0, 2.5) # 返回 32.5
  2. snappedf(3.14159, 0.01) # 返回 3.14

int snappedi(x: float, step: int) 🔗

返回最接近 xstep 的倍数。

snapped 的类型安全版本,返回一个 int

  1. snappedi(53, 16) # 返回 48
  2. snappedi(4096, 100) # 返回 4100

float sqrt(x: float) 🔗

返回 x 的平方根,其中 x 是一个非负数。

  1. sqrt(9) # 返回 3
  2. sqrt(10.24) # 返回 3.2
  3. sqrt(-1) # 返回 NaN

注意:负数的 x 会返回 NaN(“不是数字”)。在 C# 中,如果需要负输入,请使用 System.Numerics.Complex


int step_decimals(x: float) 🔗

返回小数点后第一个非零数字的位置。注意最大返回值是 10,这是实现中的设计决定。

  1. var n = step_decimals(5) # n 为 0
  2. n = step_decimals(1.0005) # n 为 4
  3. n = step_decimals(0.000000005) # n 为 9

String str(…) vararg 🔗

尽可能以最佳方式将一个或多个任何 Variant 类型的参数转换为一个 String

  1. var a = [10, 20, 30]
  2. var b = str(a)
  3. print(len(a)) # 输出 3(数组中元素的数量)。
  4. print(len(b)) # 输出 12(字符串“[10, 20, 30]”的长度)。

Variant str_to_var(string: String) 🔗

var_to_str 返回的已格式化的 string 转换为原始 Variant

GDScriptC#

  1. var data = '{ "a": 1, "b": 2 }' # data 是一个 String
  2. var dict = str_to_var(data) # dict 是一个 Dictionary
  3. print(dict["a"]) # 输出 1
  1. string data = "{ \"a\": 1, \"b\": 2 }"; // data 是一个 string
  2. var dict = GD.StrToVar(data).AsGodotDictionary(); // dict 是一个 Dictionary
  3. GD.Print(dict["a"]); // 输出 1

float tan(angle_rad: float) 🔗

返回弧度角 angle_rad 的正切值。

  1. tan(deg_to_rad(45)) # 返回 1

float tanh(x: float) 🔗

返回 x 的双曲正切值。

  1. var a = log(2.0) # 返回 0.693147
  2. 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,但是其中的数据以及其类型将会与请求的类型相同。

  1. type_convert("Hi!", TYPE_INT) # 返回 0
  2. type_convert("123", TYPE_INT) # 返回 123
  3. type_convert(123.4, TYPE_INT) # 返回 123
  4. type_convert(5, TYPE_VECTOR2) # 返回 (0, 0)
  5. type_convert("Hi!", TYPE_NIL) # 返回 null

String type_string(type: int) 🔗

返回类型 type 的人类可读名称,参数使用 Variant.Type 的值。

  1. print(TYPE_INT) # 输出 2。
  2. print(type_string(TYPE_INT)) # 输出“int”。
  3. print(type_string(TYPE_STRING)) # 输出“String”。

另见 typeof


int typeof(variable: Variant) 🔗

返回变量 variable 的内部类型,使用的是 Variant.Type 中的值。

  1. var json = JSON.new()
  2. json.parse('["a", "b", "c"]')
  3. var result = json.get_data()
  4. if typeof(result) == TYPE_ARRAY:
  5. print(result[0]) # 输出 a
  6. else:
  7. 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 对其进行解析。

GDScriptC#

  1. var a = { "a": 1, "b": 2 }
  2. print(var_to_str(a))
  1. var a = new Godot.Collections.Dictionary { ["a"] = 1, ["b"] = 2 };
  2. GD.Print(GD.VarToStr(a));

输出:

  1. {
  2. "a": 1,
  3. "b": 2
  4. }

注意:不支持转换 SignalCallable,这些类型无论有什么数据,转换后都是空值。


Variant weakref(obj: Variant) 🔗

返回一个 WeakRef 实例,其中包含对 obj 的弱引用。如果 objnull,则返回空的 WeakRef 实例。如果 obj 既不是 Object 派生实例,也不是 null,则打印错误并返回 null

对对象的弱引用不足以使对象保持存活:当对引用对象的剩余引用都是弱引用时,垃圾回收可以自由销毁该引用对象并将其内存重新用于其他用途。但是,在对象实际被销毁之前,弱引用可能会返回该对象,即使不存在对它的强引用也是如此。


Variant wrap(value: Variant, min: Variant, max: Variant) 🔗

minmax 之间包裹 Variant value。可用于创建类似循环的行为或无限曲面。

支持变体类型 intfloat。如果任一参数是 float,则该函数返回 float,否则返回 int

  1. var a = wrap(4, 5, 10)
  2. # a 为 9 (整数类型)
  3. var a = wrap(7, 5, 10)
  4. # a 为 7 (整数类型)
  5. var a = wrap(10.5, 5, 10)
  6. # a 为 5.5 (浮点类型)

float wrapf(value: float, min: float, max: float) 🔗

minmax 之间将浮点数 value 循环。可用于创建类似循环的行为或无限曲面。

  1. # 在 5.0 和 9.9 之间无限循环
  2. value = wrapf(value + 0.1, 5.0, 10.0)
  1. # 无限旋转(弧度)
  2. angle = wrapf(angle + 0.1, 0.0, TAU)
  1. # 无限旋转(弧度)
  2. angle = wrapf(angle + 0.1, -PI, PI)

注意:如果 min0,则相当于 fposmod,因此请改用它。

通过让用户控制最小值,wrapf 比使用 fposmod 方法更灵活。


int wrapi(value: int, min: int, max: int) 🔗

minmax 之间环绕整数 value。 可用于创建类似循环的行为或无限曲面。

  1. # 在 5 和 9 之间无限循环
  2. frame = wrapi(frame + 1, 5, 10)
  1. # result 是 -2
  2. var result = wrapi(-6, -5, -1)