2020-02-22 21:59:09 +08:00
<?xml version="1.0" encoding="UTF-8" ?>
2022-02-14 21:18:53 +08:00
<class name= "Callable" version= "4.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation= "../class.xsd" >
2020-02-22 21:59:09 +08:00
<brief_description >
2020-03-04 02:21:21 +08:00
An object representing a method in a certain object that can be called.
2020-02-22 21:59:09 +08:00
</brief_description>
<description >
2020-03-04 02:21:21 +08:00
[Callable] is a first class object which can be held in variables and passed to functions. It represents a given method in an [Object], and is typically used for signal callbacks.
[b]Example:[/b]
2020-09-12 23:06:13 +08:00
[codeblocks]
[gdscript]
2020-03-04 02:21:21 +08:00
func print_args(arg1, arg2, arg3 = ""):
prints(arg1, arg2, arg3)
2020-09-12 23:06:13 +08:00
2020-03-04 02:21:21 +08:00
func test():
2021-03-01 22:27:52 +08:00
var callable = Callable(self, "print_args")
callable.call("hello", "world") # Prints "hello world ".
2020-03-04 02:21:21 +08:00
callable.call(Vector2.UP, 42, callable) # Prints "(0, -1) 42 Node(Node.gd)::print_args".
callable.call("invalid") # Invalid call, should have at least 2 arguments.
2020-09-12 23:06:13 +08:00
[/gdscript]
[csharp]
2021-03-01 22:27:52 +08:00
public void PrintArgs(object arg1, object arg2, object arg3 = null)
2020-09-12 23:06:13 +08:00
{
GD.PrintS(arg1, arg2, arg3);
}
public void Test()
{
2021-03-01 22:27:52 +08:00
Callable callable = new Callable(this, nameof(PrintArgs));
callable.Call("hello", "world"); // Prints "hello world null".
callable.Call(Vector2.Up, 42, callable); // Prints "(0, -1) 42 Node(Node.cs)::PrintArgs".
2020-09-12 23:06:13 +08:00
callable.Call("invalid"); // Invalid call, should have at least 2 arguments.
}
[/csharp]
[/codeblocks]
2020-02-22 21:59:09 +08:00
</description>
<tutorials >
</tutorials>
2021-09-21 10:49:02 +08:00
<constructors >
<constructor name= "Callable" >
2021-07-30 21:28:05 +08:00
<return type= "Callable" />
2020-11-10 00:46:03 +08:00
<description >
Constructs a null [Callable] with no object nor method bound.
</description>
2021-09-21 10:49:02 +08:00
</constructor>
<constructor name= "Callable" >
2021-07-30 21:28:05 +08:00
<return type= "Callable" />
<argument index= "0" name= "from" type= "Callable" />
2020-11-10 00:46:03 +08:00
<description >
Constructs a [Callable] as a copy of the given [Callable].
</description>
2021-09-21 10:49:02 +08:00
</constructor>
<constructor name= "Callable" >
2021-07-30 21:28:05 +08:00
<return type= "Callable" />
<argument index= "0" name= "object" type= "Object" />
<argument index= "1" name= "method" type= "StringName" />
2020-02-22 21:59:09 +08:00
<description >
2020-11-10 00:46:03 +08:00
Creates a new [Callable] for the method called [code]method[/code] in the specified [code]object[/code].
2020-02-22 21:59:09 +08:00
</description>
2021-09-21 10:49:02 +08:00
</constructor>
</constructors>
<methods >
2021-03-18 21:44:42 +08:00
<method name= "bind" qualifiers= "vararg const" >
2021-07-30 21:28:05 +08:00
<return type= "Callable" />
2020-10-12 16:57:54 +08:00
<description >
2020-09-12 23:30:08 +08:00
Returns a copy of this [Callable] with the arguments bound. Bound arguments are passed after the arguments supplied by [method call].
2020-10-12 16:57:54 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "call" qualifiers= "vararg const" >
2021-07-30 21:28:05 +08:00
<return type= "Variant" />
2020-02-22 21:59:09 +08:00
<description >
2020-03-04 02:21:21 +08:00
Calls the method represented by this [Callable]. Arguments can be passed and should match the method's signature.
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "call_deferred" qualifiers= "vararg const" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2020-02-22 21:59:09 +08:00
<description >
2020-03-04 02:21:21 +08:00
Calls the method represented by this [Callable] in deferred mode, i.e. during the idle frame. Arguments can be passed and should match the method's signature.
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "get_method" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "StringName" />
2020-02-22 21:59:09 +08:00
<description >
2020-03-04 02:21:21 +08:00
Returns the name of the method represented by this [Callable].
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "get_object" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "Object" />
2020-02-22 21:59:09 +08:00
<description >
2020-03-04 02:21:21 +08:00
Returns the object on which this [Callable] is called.
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "get_object_id" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "int" />
2020-02-22 21:59:09 +08:00
<description >
2020-03-04 02:21:21 +08:00
Returns the ID of this [Callable]'s object (see [method Object.get_instance_id]).
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "hash" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "int" />
2020-02-22 21:59:09 +08:00
<description >
2022-02-13 05:17:35 +08:00
Returns the 32-bit hash value of this [Callable]'s object.
[b]Note:[/b] [Callable]s with equal content will always produce identical hash values. However, the reverse is not true. Returning identical hash values does [i]not[/i] imply the callables are equal, because different callables can have identical hash values due to hash collisions. The engine uses a 32-bit hash algorithm for [method hash].
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "is_custom" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "bool" />
2020-02-22 21:59:09 +08:00
<description >
2020-09-12 23:30:08 +08:00
Returns [code]true[/code] if this [Callable] is a custom callable whose behavior differs based on implementation details. Custom callables are used in the engine for various reasons. If [code]true[/code], you can't use [method get_method].
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "is_null" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "bool" />
2020-02-22 21:59:09 +08:00
<description >
2020-09-12 23:30:08 +08:00
Returns [code]true[/code] if this [Callable] has no target to call the method on.
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "is_standard" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "bool" />
2020-02-22 21:59:09 +08:00
<description >
2020-09-12 23:30:08 +08:00
Returns [code]true[/code] if this [Callable] is a standard callable, referencing an object and a method using a [StringName].
2020-02-22 21:59:09 +08:00
</description>
</method>
2021-06-30 22:36:46 +08:00
<method name= "is_valid" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "bool" />
2021-06-30 22:36:46 +08:00
<description >
Returns [code]true[/code] if the object exists and has a valid function assigned, or is a custom callable.
</description>
</method>
2021-05-04 05:00:44 +08:00
<method name= "rpc" qualifiers= "vararg const" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
2021-05-04 05:00:44 +08:00
<description >
Perform an RPC (Remote Procedure Call). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling it on unsupported functions will result in an error.
</description>
</method>
<method name= "rpc_id" qualifiers= "vararg const" >
2021-07-30 21:28:05 +08:00
<return type= "void" />
<argument index= "0" name= "peer_id" type= "int" />
2021-05-04 05:00:44 +08:00
<description >
Perform an RPC (Remote Procedure Call) on a specific peer ID (see multiplayer documentation for reference). This is used for multiplayer and is normally not available unless the function being called has been marked as [i]RPC[/i]. Calling it on unsupported functions will result in an error.
</description>
</method>
2021-03-18 21:44:42 +08:00
<method name= "unbind" qualifiers= "const" >
2021-07-30 21:28:05 +08:00
<return type= "Callable" />
<argument index= "0" name= "argcount" type= "int" />
2020-10-12 16:57:54 +08:00
<description >
2020-09-12 23:30:08 +08:00
Returns a copy of this [Callable] with the arguments unbound. Calling the returned [Callable] will call the method without the extra arguments that are supplied in the [Callable] on which you are calling this method.
2020-10-12 16:57:54 +08:00
</description>
</method>
2020-02-22 21:59:09 +08:00
</methods>
2021-09-21 10:49:02 +08:00
<operators >
<operator name= "operator !=" >
<return type= "bool" />
<argument index= "0" name= "right" type= "Callable" />
<description >
Returns [code]true[/code] if both [Callable]s invoke different targets.
</description>
</operator>
<operator name= "operator ==" >
<return type= "bool" />
<argument index= "0" name= "right" type= "Callable" />
<description >
Returns [code]true[/code] if both [Callable]s invoke the same custom target.
</description>
</operator>
</operators>
2020-02-22 21:59:09 +08:00
</class>