跳到主要内容

Object

简要描述

所有非内置类型的基类。

描述

每个不是内置类型的类都将从该类继承。

您可以使用IVRScript中的Object.new(,C#中的new Object从脚本语言构造对象

对象不管理内存。 如果一个类从Object继承,则必须手动删除它的实例。

一些扩展对象的类增加了内存管理。 [reference]就是这种情况,对引用计数,并在不再引用时自动删除自身。Node是另一种基本类型,当其从内存中释放时,将删除其所有子级。

对象导出属性,主要用于存储和编辑,但在编程中并没有那么多。属性在method_get_property_list中导出,并在method_getmethod_set中进行处理。但是,脚本语言和C++具有更简单的导出方法。

可以使用in在IVRScript中直接测试属性成员身份:

var n = Node2D.new()
print("position" in n) # 打印“True”
print("other_property" in n)# 打印“False”

对象(Object)也接收通知。通知对象有关不同事件的信息,以便可以一起处理所有事件。参见_notification.

方法

返回值类型方法名称
Variant_get(property: String) virtual
Array_get_property_list() virtual
void_init() virtual
void_notification(what: int) virtual
bool_set(property: String, value: Variant) virtual
String_to_string() virtual
voidadd_user_signal(#method-add_user_signal)(signal: String, arguments: Array = [])
Variantcall(method: String, ...) vararg
voidcall_deferred(method: String, ...) vararg
Variantcallv(method: String, arg_array: Array)
boolcan_translate_messages() const
intconnect(signal: String, target: Object, method: String, binds: Array = [], flags: int = 0)
voiddisconnect(signal: String, target: Object, method: String)
voidemit_signal(#method-emit_signal)(signal: String, ...) vararg
voidfree()
Variantget(property: String) const
Stringget_class() const
Arrayget_incoming_connections() const
Variantget_indexed(property: NodePath) const
intget_instance_id() const
Variantget_meta(name: String) const
PoolStringArrayget_meta_list() const
Arrayget_method_list(#method-get_method_list)() const
Arrayget_property_list() const
Referenceget_script() const
Arrayget_signal_connection_list(#method-get_signal_connection_list)(signal: String) const
Arrayget_signal_list(#method-get_signal_list)() const
boolhas_meta(name: String) const
boolhas_method(#method-has_method)(method: String) const
boolhas_user_signal(#method-has_user_signal)(signal: String) const
boolis_blocking_signals(#method-is_blocking_signals)() const
boolis_class(class: String) const
boolis_connected(signal: String, target: Object, method: String) const
boolis_queued_for_deletion() const
voidnotification(what: int, reversed: bool = false)
voidproperty_list_changed_notify()
voidremove_meta(name: String)
voidset(property: String, value: Variant)
voidset_block_signals(#method-set_block_signals)(enable: bool)
voidset_deferred(property: String, value: Variant)
voidset_indexed(property: NodePath, value: Variant)
voidset_message_translation(enable: bool)
voidset_meta(name: String, value: Variant)
voidset_script(script: Reference)
Stringto_string()
Stringtr(message: String) const

信号

  • **script_changed**

每当对象的脚本更改时发出。


枚举

enum ConnectFlags:

  • **CONNECT_DEFERRED = 1**

以延迟模式连接信号。

  • **CONNECT_PERSIST = 2**

当对象序列化到文件时,保留持久连接。

  • **CONNECT_ONESHOT = 4**

一键式连接在发射后会自行断开。

  • **CONNECT_REFERENCE_COUNTED = 8**

连接一个信号作为引用计数。


方法说明

  • _get _get(property: String) virtual

可以重写以自定义get的返回值的虚拟方法。

返回给定的属性。如果property不存在,则返回null


  • _get_property_list _get_property_list() virtual

可以重写以自定义get_property_list的返回值的虚拟方法。

以字典的Array(/docs/api/data_types/Array.md)形式返回对象的属性列表。

每个属性的Dictionary(/docs/api/data_types/Dictionary.md)必须至少包含name:String type:int(请参阅Variant.Type)条目。 它还可以包括hint:int(请参阅PropertyHint),hint_string:Stringusage:int(请参阅PropertyUsageFlags)。


  • _init _init() virtual

初始化对象时调用。


  • _notification _notification(what: int) virtual

每当对象收到通知时调用,该通知在what中由常量标识。基本的Object有两个常量NOTIFICATION_POSTINITIALIZENOTIFICATION_PREDELETE,但是诸如Node之类的子类定义了许多此方法也接收到的通知。


  • _set _set(property: String, value: Variant) virtual

可以重写以自定义set返回值的虚拟方法。

设置一个属性。如果property存在,则返回true


  • _to_string _to_string() virtual

可以重写以自定义to_string的返回值的虚拟方法,从而可以将对象的表示形式转换为字符串,例如使用print(obj)

返回表示对象的String(/docs/api/data_types/String.md)。 如果未覆盖,则默认为“ [ClassName:RID]”


  • add_user_signal add_user_signal(signal: String, arguments: Array = [])

添加用户定义的signal。参数是可选的,但可以作为字典的Array(/docs/api/data_types/Array.md)添加,每个字典包含 name: Stringtype:int条目(请参阅Variant.Type)。


  • call call(method: String, ...) vararg

在对象上调用method并返回结果。此方法支持可变数量的参数,因此参数以逗号分隔列表的形式传递。 例子:

call(“ set”,“ position”,Vector2(42.00.0))

  • call_deferred call_deferred(method: String, ...) vararg

在空闲时间调用对象的method。此方法支持可变数量的参数,因此参数以逗号分隔列表的形式传递。 例子:

call_deferred(“ set”,“ position”,Vector2(42.00.0))

  • callv callv(method: String, arg_array: Array)

在对象上调用method并返回结果。与call相反,此方法不支持可变数量的参数,但希望所有参数都通过单个Array(/docs/api/data_types/Array.md)。

callv(“ set”,[position”,Vector2(42.00.0]

  • can_translate_messages can_translate_messages() const

如果对象可以翻译字符串,则返回true。请参见set_message_translationtr


  • connect connect(signal: String, target: Object, method: String, binds: Array = [], flags: int = 0)

signal连接到target对象上的method

signal只能连接一次method

如果target在游戏的生命周期中被破坏,则连接将丢失。

例子:

connect(“ pressed”,self,“ _on_Button_pressed”)
connect(“ text_entered”,self,“ _on_LineEdit_text_entered”)
connect("hit", self, "_on_Player_hit", [weapon_type,])

传递给connectbinds与调用emit_signal时使用的参数之间的关系的示例:

connect("hit", self, "_on_Player_hit", [weapon_type,])
emit_signal("hit", "Dark lord", 5) # "Dark lord" and 5 are passed first
func _on_Player_hit(hit_by, level, weapon_type, damage):
print("Hit by %s (lvl %d) with weapon %s for %d damage" % [level,])

  • disconnect disconnect(signal: String, target: Object, method: String)

从给定的target上的method断开signal

如果您尝试断开不存在的连接,则该方法将引发错误。


  • emit_signal emit_signal(signal: String, ...) vararg

发出给定的signal

emit_signal("hit", weapon_type, damage)
emit_signal("game_over")

  • free free()

从内存中删除对象。


  • get get(property: String) const

返回给定propertyVariant值。


  • get_class get_class() const

String(/docs/api/data_types/String.md)返回对象的类。


  • get_incoming_connections get_incoming_connections() const

返回字典的Array(/docs/api/data_types/Array.md),其中包含有关连接到对象的信号的信息。

每个Dictionary(/docs/api/data_types/Dictionary.md)包含三个String条目:

-source是对信号发射器的引用。

-signal_name是所连接信号的名称。

-method_name是信号所连接的方法的名称。


  • get_indexed get_indexed(property: NodePath) const

获取由给定的NodePath(/docs/api/data_types/NodePath.md)索引的对象的属性。


  • get_instance_id get_instance_id() const

返回对象的唯一实例ID。

该ID可以保存在EncodedObjectAsID中,并且可以用于通过@检索对象实例。


  • get_meta get_meta(name: String) const

返回给定name的对象的元数据条目。


  • get_meta_list get_meta_list() const

[PoolStringArray]的形式返回对象的元数据。


  • get_method_list get_method_list() const

Array(/docs/api/data_types/Array.md)的形式返回对象的方法及其签名。


  • get_property_list get_property_list() const

以字典的Array(/docs/api/data_types/Array.md)形式返回对象的属性列表。

每个属性的Dictionary(/docs/api/data_types/Dictionary.md)至少包含name: Stringtype:int(请参阅Variant.Type)条目。


  • get_script get_script() const

返回对象的[Script]实例;如果未分配,则返回null


  • get_signal_connection_list get_signal_connection_list(signal: String) const

返回给定signal的连接的Array(/docs/api/data_types/Array.md)。


  • get_signal_list get_signal_list() const

以字典的Array(/docs/api/data_types/Array.md)形式返回信号列表。


  • has_meta has_meta(name: String) const

如果找到具有给定name的元数据条目,则返回true


  • has_method has_method(method: String) const

如果对象包含给定的method,则返回true


  • has_user_signal has_user_signal(signal: String) const

如果给定的用户定义的signal存在,则返回true


  • is_blocking_signals is_blocking_signals() const

如果启用了信号发射阻止,则返回true


  • is_class is_class(class: String) const

如果对象从给定的class继承,则返回true


  • is_connected is_connected(signal: String, target: Object, method: String) const

如果给定的 signal, target, 和method存在连接,则返回true


  • is_queued_for_deletion is_queued_for_deletion() const

如果为该对象调用了Node.queue_free方法,则返回true


  • notification notification(what: int, reversed: bool = false)

向对象发送给定的通知,该通知还将触发对该对象继承的所有类的_notification方法的调用。

如果reversedtrue,则首先在对象自己的类上调用_notification,然后在其连续的父类上调用。


  • property_list_changed_notify property_list_changed_notify()

通知编辑器属性列表已更改,以便编辑器插件可以将新值考虑在内。


  • remove_meta remove_meta(name: String)

从对象的元数据中删除给定的条目。


  • set set(property: String, value: Variant)

将新值分配给给定的属性。


  • set_block_signals set_block_signals(enable: bool)

如果设置为true,则会阻止信号发射。


  • set_deferred set_deferred(property: String, value: Variant)

在当前帧的物理步骤之后,将新值分配给给定的属性。


  • set_indexed set_indexed(property: NodePath, value: Variant)

NodePath(/docs/api/data_types/NodePath.md)标识的属性分配一个新值。

set_indexed("position", Vector2(42, 0))
set_indexed("position:y", -10)
print(position) # (42, -10)

  • set_message_translation set_message_translation(enable: bool)

定义对象是否可以翻译字符串(使用tr的调用)。


  • set_meta set_meta(name: String, value: Variant)

在对象的元数据中添加或更改给定的条目。


  • set_script set_script(script: Reference)

将脚本分配给对象。

如果对象已具有脚本,则先前的脚本实例将被释放,并且其变量和状态将丢失。


  • to_string to_string()

返回表示对象的String(/docs/api/data_types/String.md)。

覆盖方法[method_to_string]以自定义String(/docs/api/data_types/String.md)表示形式。


  • tr tr(message: String) const

使用“项目设置”中配置的翻译目录翻译消息。

仅在启用消息转换(默认情况下)的情况下才起作用,否则它将返回message不变。