@GDScript

类别: 核心

简要说明

内置gdscript函数。

方法

Color

Color8 ( int r8, int g8, int b8, int a8=255 )

Color

ColorN ( String name, float alpha=1.0 )

float

abs ( float s )

float

acos ( float s )

float

asin ( float s )

无效

assert ( bool condition )

float

atan ( float s )

float

atan2 ( float y, float x )

Variant

bytes2var ( PoolByteArray bytes, bool allow_objects=false )

Vector2

cartesian2polar ( float x, float y )

float

ceil ( float s )

String

char ( int ascii )

float

clamp ( float value, float min, float max )

Variant

convert ( Variant what, int type )

float

cos ( float s )

float

cosh ( float s )

float

db2linear ( float db )

int

decimals ( float step )

float

dectime ( float value, float amount, float step )

float

deg2rad ( float deg )

Object

dict2inst ( Dictionary dict )

float

ease ( float s, float curve )

float

exp ( float s )

float

floor ( float s )

float

fmod ( float a, float b )

float

fposmod ( float a, float b )

FuncRef

funcref ( Object instance, String funcname )

Array

get_stack ( )

int

hash ( Variant var )

Dictionary

inst2dict ( Object inst )

Object

instance_from_id ( int instance_id )

float

inverse_lerp ( float from, float to, float weight )

bool

is_equal_approx ( float a, float b )

bool

is_inf ( float s )

bool

is_instance_valid ( Object instance )

bool

is_nan ( float s )

bool

is_zero_approx ( float s )

int

len ( Variant var )

Variant

lerp ( Variant from, Variant to, float weight )

float

lerp_angle ( float from, float to, float weight )

float

linear2db ( float nrg )

Resource

load ( String path )

float

log ( float s )

float

max ( float a, float b )

float

min ( float a, float b )

float

move_toward ( float from, float to, float delta )

int

nearest_po2 ( int value )

Variant

parse_json ( String json )

Vector2

polar2cartesian ( float r, float th )

int

posmod ( int a, int b )

float

pow ( float base, float exp )

Resource

preload ( String path )

无效

print ( ... ) vararg

无效

print_debug ( ... ) vararg

无效

print_stack ( )

无效

printerr ( ... ) vararg

无效

printraw ( ... ) vararg

无效

prints ( ... ) vararg

无效

printt ( ... ) vararg

无效

push_error ( String message )

无效

push_warning ( String message )

float

rad2deg ( float rad )

float

rand_range ( float from, float to )

Array

rand_seed ( int seed )

float

randf ( )

int

randi ( )

无效

randomize ( )

Array

range ( ... ) vararg

float

range_lerp ( float value, float istart, float istop, float ostart, float ostop )

float

round ( float s )

无效

seed ( int seed )

float

sign ( float s )

float

sin ( float s )

float

sinh ( float s )

float

smoothstep ( float from, float to, float weight )

float

sqrt ( float s )

int

step_decimals ( float step )

float

stepify ( float s, float step )

String

str ( ... ) vararg

Variant

str2var ( String string )

float

tan ( float s )

float

tanh ( float s )

String

to_json ( Variant var )

bool

type_exists ( String type )

int

typeof ( Variant what )

String

validate_json ( String json )

PoolByteArray

var2bytes ( Variant var, bool full_objects=false )

String

var2str ( Variant var )

WeakRef

weakref ( Object obj )

float

wrapf ( float value, float min, float max )

int

wrapi ( int value, int min, int max )

GDScriptFunctionState

yield ( Object object=null, String signal="" )

常量

  • PI = 3.141593 ---一个常数,它表示一个圆的直径是它周长的几倍。

  • TAU = 6.283185 ——圆常数,单位圆的周长。

  • INF = inf ——正无穷大。(对于负无穷大,使用-inf)。

  • NAN = nan ---宏常量,扩展为表示NaN的float类型表达式。

NaN值用于标识浮点元素的未定义或不可表示的值,例如负数的平方根或0/0的结果。

描述

核心内置gdscript函数的列表。数学函数和其他实用程序。其他一切都是由对象提供的。(关键词:内置、内置、全局函数。)

方法说明

返回带有红色、绿色、蓝色和阿尔法通道的32位颜色。每个通道有8位信息,范围从0到255。

r8 红色通道

g8 绿色通道

b8 蓝色通道

a8 阿尔法通道

red = Color8(255, 0, 0)

根据标准化的 name 具有 alpha 范围从0到1。

red = ColorN("red", 1)

支持的颜色名称:

“aliceblue”、“antiquewite”、“aqua”、“aquamarine”、“azure”、“beige”、“bisque”、“black”、“blanchedalmond”、“blue”、“blue紫罗兰”、“brown”、“burlywood”、“cadetblue”、“chartreuse”、“chocolate”、“coral”、“cornflower”、“cornsylor”、“crimson”、“青色”、“darkblue”、“darkbluendrod”、“darkgray”、““深绿色”、“深卡其色”、“深洋红”、“深橄榄绿”、“深橙色”、“深兰花色”、“深红色”、“深鲑鱼色”、“深海绿”、“深石板蓝”、“深石板蓝”、“深青绿色”、“深紫色”、“深紫色”、“深蓝色”、“深灰色”、“道奇蓝”、“耐火砖”、“花白”、“森林绿”、“紫红色”、“G”Ainsboro“,”ghostwhite“,”gold“,”goldenrod“,”gray“,”webgray“,”green“,”webgreen“,”greenyellow“,”honeydew“,”hotpank“,”indianred“,”indigo“,”象牙“,”khaki“,”lavender“,”lavenderflush“,”lawgreen“,”lemonchiffon“,”lightblue“,”lightcoral“,”light青色“,”lightgoldenrod“,”lightgrat绿色,“浅粉色”,“浅三文鱼”,“浅海绿”,“浅天空蓝”,“浅石板蓝”,“浅钢蓝”,“浅黄色”,“石灰”,“柠檬绿”,“亚麻布”,“洋红”,“褐红”,“Webmaroon”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,“中海蓝”,nggreen“,”中绿松石“,”中绿松石“,”中蓝松石“,”薄荷糖“,”mistyrose“,”moccasin“,”navajowite“,”navyblue“,”oldlace“,”olive“,”olivedrab“,”orange“,”orangered“,”兰花“,”palegoldenrod“,”palegreen“,”淡绿松石“,”palevioletred“,”papapayawhip“,”peachpuff“,”秘鲁“,”pink“,”“,”李子“,”粉蓝色“,”紫色“,”webpurple“,”rebeccapurple“,”红色“,”rosybrown“,”royalblue“,”saddlebrown“,”鲑鱼“,”sanddybrown“,”海绿“,”贝壳“,”sienna“,”银色“,”天蓝色“,”slateblue“,”slateglay“,”雪“,”springgreen“,”steelblue“,”tan“,”teal“,”蓟“,”番茄“,”青绿色E“,”紫色“,”小麦“,”白色“,”白色“,”黄色“,”黄绿“。

返回参数的绝对值 s (即无符号值,适用于整数和浮点)。

# a is 1
a = abs(-1)

返回的弧余弦 s 以弧度表示。用来得到余弦角 s .

# c is 0.523599 or 30 degrees if converted with rad2deg(s)
c = acos(0.866025)

返回的弧正弦值 s 以弧度表示。用于获取正弦角度 s .

# s is 0.523599 or 30 degrees if converted with rad2deg(s)
s = asin(0.5)
  • void assert ( bool condition )

断言 conditiontrue . 如果 conditionfalse ,将生成一个错误并停止程序,直到您恢复它。仅在调试版本中执行,或在从编辑器运行游戏时执行。使用它进行调试,以确保语句 true 在开发过程中。

# Imagine we always want speed to be between 0 and 20
speed = -10
assert(speed < 20) # True, the program will continue
assert(speed >= 0) # False, the program will stop
assert(speed >= 0 && speed < 20) # You can also combine the two conditional statements in one check

返回的反正切值 s 以弧度表示。在三角法中,用它从一个角的正切处获得角度: atan(tan(angle)) == angle .

该方法无法知道角度应该落在哪个象限。见 atan2 如果你总是想要一个准确的角度。

a = atan(0.5) # a is 0.463648

返回的反正切值 y/x 以弧度表示。用于获取相切角 y/x . 为了计算该值,该方法考虑了两个参数的符号,以便确定象限。

a = atan2(0, -1) # a is 3.141593

将字节数组解码回一个值。什么时候? allow_objectstrue 允许解码对象。

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

将以笛卡尔坐标系(X和Y轴)表示的二维点转换为极坐标系(距原点和角度的距离)。

查房 s 向上,返回不小于 s .

i = ceil(1.45)  # i is 2
i = ceil(1.001) # i is 2

以给定ASCII代码的字符串形式返回字符。

a = char(65)      # a is "A"
a = char(65 + 32) # a is "a"

夹钳 value 并返回一个不小于 min 不超过 max .

speed = 1000
# a is 20
a = clamp(speed, 1, 20)

speed = -10
# a is 1
a = clamp(speed, 1, 20)

以尽可能好的方式从一种类型转换为另一种类型。这个 type 参数使用枚举 TYPE_* 在里面 @GlobalScope .

a = Vector2(1, 0)
# Prints 1
print(a.length())
a = convert(a, TYPE_STRING)
# Prints 6 as "(1, 0)" is 6 characters
print(a.length())

返回角度的余弦值 s 弧度的

# Prints 1 then -1
print(cos(PI * 2))
print(cos(PI))

返回的双曲余弦 s 弧度的

# Prints 1.543081
print(cosh(1))

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

的别名已弃用 step_decimals .

Returns the result of value decreased by step * amount.

# a = 59
a = dectime(60, 10, 0.1))

返回转换为弧度的度数。

# r is 3.141593
r = deg2rad(180)

将以前转换的实例转换为字典,再转换为实例。用于反序列化。

基于指数的缓和函数。0是常量,1是线性的,0到1是易入的,1+是易出的。负值为in out/out in。

自然指数函数。它提高了数学常数 e 的力量 s 然后返回。

e 近似值为2.71828。

a = exp(2) # Approximately 7.39

查房 s 返回最接近的较小整数。

# a is 2
a = floor(2.99)
# a is -3
a = floor(-2.99)

返回的浮点余数 a/b ,保持 a .

# Remainder is 1.5
var remainder = fmod(7, 5.5)

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

返回的浮点模 a/b 这在正负两个方面是一样的。

var i = -6
while i < 5:
    prints(i, fposmod(i, 3))
    i += 1

生产:

-6 0
-5 1
-4 2
-3 0
-2 1
-1 2
0 0
1 1
2 2
3 0
4 1

返回对指定函数的引用 funcnameinstance 节点。由于函数不是gdscript中的第一类对象,请使用 funcref 存储 FuncRef 在一个变量中,稍后调用它。

func foo():
    return("bar")

a = funcref(self, "foo")
print(a.call_func()) # Prints bar

返回表示当前调用堆栈的字典数组。

func _ready():
    foo()

func foo():
    bar()

func bar():
    print(get_stack())

将打印

[{function:bar, line:12, source:res://script.gd}, {function:foo, line:9, source:res://script.gd}, {function:_ready, line:6, source:res://script.gd}]

返回所传递变量的整数哈希。

print(hash("a")) # Prints 177670

返回已转换为字典的传递实例(用于序列化)。

var foo = "bar"
func _ready():
    var d = inst2dict(self)
    print(d.keys())
    print(d.values())

打印输出:

[@subpath, @path, foo]
[, res://test.gd, bar]
  • Object instance_from_id ( int instance_id )

返回对应于 instance_id . 所有对象都具有唯一的实例ID。

var foo = "bar"
func _ready():
    var id = get_instance_id()
    var inst = instance_from_id(id)
    print(inst.foo) # Prints bar

返回考虑给定范围的规范化值。

inverse_lerp(3, 5, 4) # Returns 0.5

是否返回真/假 ab 彼此大致相等。

是否返回 s 是无穷大值(正无穷大或负无穷大)。

是否返回 instance 是有效的对象(例如尚未从内存中删除)。

是否返回 s 是NaN(非数字)值。

是否返回真/假 s 等于或接近于零。

返回变量的长度 var . 长度是字符串的字符数、数组的元素数、字典的大小等。

注: 如果变量不能提供长度,则生成致命错误。

a = [1, 2, 3, 4]
len(a) # Returns 4

通过标准化值在两个值之间进行线性插值。

如果 fromto 参数的类型为 intfloat ,返回值为 float .

如果两者都是相同的向量类型 (Vector2Vector3Color )返回值的类型相同。 (lerp 然后调用向量类型 linear_interpolate 方法)。

lerp(0, 4, 0.75) # Returns 3.0
lerp(Vector2(1, 5), Vector2(3, 2), 0.5) # Returns Vector2(2, 3.5)

用归一化值在两个角度(以弧度为单位)之间进行线性插值。

类似 lerp 但当角度环绕时,正确插入 TAU .

extends Sprite
var elapsed = 0.0
func _process(delta):
    var min_angle = deg2rad(0.0)
    var max_angle = deg2rad(90.0)
    rotation = lerp_angle(min_angle, max_angle, elapsed)
    elapsed += delta

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

从位于的文件系统加载资源 path .

注: 通过右键单击文件系统基座中的资源并选择 复制路径 .

# Load a scene called main located in the root of the project directory
var main = load("res://main.tscn")

自然对数。达到一定程度的持续增长所需的时间。

注: 这与大多数计算器上的“log”函数不同,后者使用以10为底的对数。

log(10) # Returns 2.302585

返回两个值的最大值。

max(1, 2) # Returns 2
max(-3.99, -4) # Returns -3.99

返回两个值的最小值。

min(1, 2) # Returns 1
min(-3.99, -4) # Returns -4

移动 from 朝向 todelta 价值。

用负号 delta 要移动的值。

move_toward(10, 5, 4) # Returns 6
  • int nearest_po2 ( int value )

返回整数的最大2次方 value .

nearest_po2(3) # Returns 4
nearest_po2(4) # Returns 4
nearest_po2(5) # Returns 8

将JSON文本解析为变量(使用 typeof 检查是否符合您的期望)。

请注意,JSON规范没有定义整数或浮点类型,而只定义数字类型。因此,解析JSON文本将把所有数值转换为 float 类型。

请注意,JSON对象不像godot字典那样保留键顺序,因此,如果字典是由JSON构造的,则不应依赖于键的顺序。相比之下,JSON数组保留元素的顺序:

p = parse_json('["a", "b", "c"]')
if typeof(p) == TYPE_ARRAY:
    print(p[0]) # Prints a
else:
    print("unexpected results")

转换用极坐标系表示的二维点(距原点的距离 r 还有一个角度 th )笛卡尔坐标系(x和y轴)。

返回的整数模 a/b 这在正负两个方面是一样的。

var i = -6
while i < 5:
    prints(i, posmod(i, 3))
    i += 1

生产:

-6 0
-5 1
-4 2
-3 0
-2 1
-1 2
0 0
1 1
2 2
3 0
4 1

返回的结果 x 提升到 y .

pow(2, 5) # Returns 32

返回在脚本分析期间从文件系统加载的资源。

注: 通过右键单击“资产”面板中的资源并选择“复制路径”,可以获得资源路径。

# Load a scene called main located in the root of the project directory
var main = preload("res://main.tscn")
  • void print ( ... ) vararg

以最佳方式将一个或多个参数转换为字符串,并将其打印到控制台。

a = [1, 2, 3]
print("a", "b", a) # Prints ab[1, 2, 3]
  • void print_debug ( ... ) vararg

喜欢 print ,但仅在调试模式下使用时打印。

  • void print_stack ( )

在代码位置打印堆栈跟踪,仅在启用了调试器的情况下运行时有效。

控制台中的输出如下所示:

Frame 0 - res://test.gd:16 in function '_process'
  • void printerr ( ... ) vararg

以标准错误行的最佳方式将一个或多个参数打印到字符串。

printerr("prints to stderr")
  • void printraw ( ... ) vararg

以控制台可能的最佳方式将一个或多个参数打印到字符串。结尾处不添加换行符。

printraw("A")
printraw("B")
# Prints AB
  • void prints ( ... ) vararg

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

prints("A", "B", "C") # Prints A B C
  • void printt ( ... ) vararg

将一个或多个参数打印到控制台,每个参数之间有一个选项卡。

printt("A", "B", "C") # Prints A       B       C
  • void push_error ( String message )

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

push_error("test error") # Prints "test error" to debugger and terminal as error call
  • void push_warning ( String message )

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

push_warning("test warning") # Prints "test warning" to debugger and terminal as warning call

从弧度转换为度数。

rad2deg(0.523599) # Returns 30

随机范围,介于 fromto .

prints(rand_range(0, 1), rand_range(0, 1)) # Prints e.g. 0.135591 0.405263

种子随机:通过A seed ,并返回一个同时具有数字和新种子的数组。“这里的seed指的是伪随机数生成器的内部状态。当前实现的内部状态是64位。

返回间隔上的随机浮点值 [0, 1] .

randf() # Returns e.g. 0.375671
  • int randi ( )

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

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
  • void randomize ( )

随机数生成器的种子(或内部状态)。当前实现使用基于时间的数字重新设置。

func _ready():
    randomize()
  • Array range ( ... ) vararg

返回具有给定范围的数组。范围可以是1个参数n(0到n-1)、两个参数(初始、最终-1)或三个参数(初始、最终-1、增量)。

for i in range(4):
    print(i)
for i in range(2, 5):
    print(i)
for i in range(0, 6, 2):
    print(i)

输出:

0
1
2
3

2
3
4

0
2
4

地图A value 从范围 [istart, istop][ostart, ostop] .

range_lerp(75, 0, 100, -1, 1) # Returns 0.5

返回最接近的整数值 s ,一半的病例从零开始四舍五入。

round(2.6) # Returns 3
  • void seed ( int seed )

为随机数生成器设置种子。

my_seed = "Godot Rocks"
seed(my_seed.hash())

返回的符号 s :-1或1。返回0 if s 是0。

sign(-6) # Returns -1
sign(0)  # Returns 0
sign(6)  # Returns 1

返回角度的正弦值 s 弧度的

sin(0.523599) # Returns 0.5

返回的双曲正弦值 s .

a = log(2.0) # Returns 0.693147
sinh(a) # Returns 0.75

返回在 fromto ,基于 weight . 类似 lerp 但在开始时插入得更快,在结束时插入得更慢。

smoothstep(0, 2, 0.5) # Returns 0.15
smoothstep(0, 2, 1.0) # Returns 0.5
smoothstep(0, 2, 2.0) # Returns 1.0

返回的平方根 s .

sqrt(9) # Returns 3

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

# n is 0
n = step_decimals(5)
# n is 4
n = step_decimals(1.0005)
# n is 9
n = step_decimals(0.000000005)

捕捉浮动值 s 给一个给定的 step .

以最佳方式将一个或多个参数转换为字符串。

var a = [10, 20, 30]
var b = str(a);
len(a) # Returns 3
len(b) # Returns 12

转换由返回的格式化字符串 var2str 到原始值。

a = '{ "a": 1, "b": 2 }'
b = str2var(a)
print(b["a"]) # Prints 1

返回角度的正切值 s 弧度的

tan(deg2rad(45)) # Returns 1

返回的双曲正切值 s .

a = log(2.0) # Returns 0.693147
tanh(a)      # Returns 0.6

转换变量 var 返回结果。用于将数据序列化为通过网络存储或发送。

a = { "a": 1, "b": 2 }
b = to_json(a)
print(b) # {"a":1, "b":2}

返回给定类是否存在于 ClassDB .

type_exists("Sprite") # Returns true
type_exists("Variant") # Returns false

返回给定变量对象的内部类型,使用 TYPE_* 枚举 @GlobalScope .

p = parse_json('["a", "b", "c"]')
if typeof(p) == TYPE_ARRAY:
    print(p[0]) # Prints a
else:
    print("unexpected results")

检查一下 json 是有效的JSON数据。如果有效,则返回空字符串。如果无效,则返回错误消息。

j = to_json([1, 2, 3])
v = validate_json(j)
if not v:
    print("valid")
else:
    prints("invalid", v)

将变量值编码为字节数组。什么时候? full_objectstrue 允许对对象进行编码(并且可能包括代码)。

转换变量 var 到一个格式化字符串,以后可以使用 str2var .

a = { "a": 1, "b": 2 }
print(var2str(a))

印刷品

{
"a": 1,
"b": 2
}

返回对对象的弱引用。

对对象的弱引用不足以使对象保持活动状态:当对引用的唯一剩余引用是弱引用时,垃圾收集可以自由销毁该引用,并将其内存用于其他用途。但是,在实际销毁对象之前,弱引用可能会返回对象,即使没有对它的强引用。

包装浮筒 value 之间 minmax .

可用于创建类似循环的行为或无限曲面。

# a is 0.5
a = wrapf(10.5, 0.0, 10.0)
# a is 9.5
a = wrapf(-0.5, 0.0, 10.0)
# Infinite loop between 0.0 and 0.99
f = wrapf(f + 0.1, 0.0, 1.0)
# Infinite rotation (in radians)
angle = wrapf(angle + 0.1, 0.0, TAU)

注: 如果您只想在0.0和 n (何处) n 是一个正的浮点值),使用 fmod 像这样的方法 fmod(number, n) .

wrapf 比使用 fmod 通过为用户提供对最小值的简单控制来实现。它还完全支持负数,例如

# Infinite rotation (in radians)
angle = wrapf(angle + 0.1, -PI, PI)

包装整数 value 之间 minmax .

可用于创建类似循环的行为或无限曲面。

# a is 0
a = wrapi(10, 0, 10)
# a is 9
a = wrapi(-1, 0, 10)
# Infinite loop between 0 and 9
frame = wrapi(frame + 1, 0, 10)

注: 如果您只想在0和之间换行 n (何处) n 是一个正整数值),使用类似于 number % n .

wrapi 比使用模方法更灵活,通过给用户一个对最小值的简单控制。它还完全支持负数,例如

# result is -2
var result = wrapi(-6, -5, -1)

停止函数执行并将当前挂起状态返回给调用函数。

从呼叫方呼叫 GDScriptFunctionState.resume 在状态恢复执行。这将使状态无效。在恢复的功能中, yield() 返回传递给 resume() 函数调用。

如果传递了一个对象和一个信号,则在该对象发出给定信号时恢复执行。在这种情况下, yield() 返回传递给的参数 emit_signal() 如果信号只接受一个参数,或者包含传递给 emit_signal() 如果信号有多个参数。