Object
简要描述
所有非内置类型的基类。
描述
每个不是内置类型的类都将从该类继承。
您可以使用IVRScript中的Object.new(
,C#中的new Object
从脚本语言构造对象
对象不管理内存。 如果一个类从Object继承,则必须手动删除它的实例。
一些扩展对象的类增加了内存管理。 [reference]就是这种情况,对引用计数,并在不再引用时自动删除自身。Node是另一种基本类型,当其从内存中释放时,将删除其所有子级。
对象导出属性,主要用于存储和编辑,但在编程中并没有那么多。属性在method_get_property_list中导出,并在method_get和method_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 |
void | add_user_signal(#method-add_user_signal)(signal: String, arguments: Array = []) |
Variant | call(method: String, ...) vararg |
void | call_deferred(method: String, ...) vararg |
Variant | callv(method: String, arg_array: Array) |
bool | can_translate_messages() const |
int | connect(signal: String, target: Object, method: String, binds: Array = [], flags: int = 0) |
void | disconnect(signal: String, target: Object, method: String) |
void | emit_signal(#method-emit_signal)(signal: String, ...) vararg |
void | free() |
Variant | get(property: String) const |
String | get_class() const |
Array | get_incoming_connections() const |
Variant | get_indexed(property: NodePath) const |
int | get_instance_id() const |
Variant | get_meta(name: String) const |
PoolStringArray | get_meta_list() const |
Array | get_method_list(#method-get_method_list)() const |
Array | get_property_list() const |
Reference | get_script() const |
Array | get_signal_connection_list(#method-get_signal_connection_list)(signal: String) const |
Array | get_signal_list(#method-get_signal_list)() const |
bool | has_meta(name: String) const |
bool | has_method(#method-has_method)(method: String) const |
bool | has_user_signal(#method-has_user_signal)(signal: String) const |
bool | is_blocking_signals(#method-is_blocking_signals)() const |
bool | is_class(class: String) const |
bool | is_connected(signal: String, target: Object, method: String) const |
bool | is_queued_for_deletion() const |
void | notification(what: int, reversed: bool = false) |
void | property_list_changed_notify() |
void | remove_meta(name: String) |
void | set(property: String, value: Variant) |
void | set_block_signals(#method-set_block_signals)(enable: bool) |
void | set_deferred(property: String, value: Variant) |
void | set_indexed(property: NodePath, value: Variant) |
void | set_message_translation(enable: bool) |
void | set_meta(name: String, value: Variant) |
void | set_script(script: Reference) |
String | to_string() |
String | tr(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:String
和usage:int
(请参阅PropertyUsageFlags)。
- _init _init() virtual
初始化对象时调用。
- _notification _notification(what: int) virtual
每当对象收到通知时调用,该通知在what
中由常量标识。基本的Object有两个常量NOTIFICATION_POSTINITIALIZE和NOTIFICATION_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: String
和type:int
条目(请参阅Variant.Type)。
- call call(method: String, ...) vararg
在对象上调用method
并返回结果。此方法支持可变数量的参数,因此参数以逗号分隔列表的形式传递。 例子:
call(“ set”,“ position”,Vector2(42.0,0.0))
- call_deferred call_deferred(method: String, ...) vararg
在空闲时间调用对象的method
。此方法支持可变数量的参数,因此参数以逗号分隔列表的形式传递。 例子:
call_deferred(“ set”,“ position”,Vector2(42.0,0.0))
- callv callv(method: String, arg_array: Array)
在对象上调用method
并返回结果。与call相反,此方法不支持可变数量的参数,但希望所有参数都通过单个Array(/docs/api/data_types/Array.md)。
callv(“ set”,[position”,Vector2(42.0,0.0)])
- can_translate_messages can_translate_messages() const
如果对象可以翻译字符串,则返回true
。请参见set_message_translation和tr
- 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,])
传递给connect的binds
与调用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
返回给定property
的Variant值。
- 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: String
和type: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方法的调用。
如果reversed
为true
,则首先在对象自己的类上调用_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
不变。