:github_url: hide .. DO NOT EDIT THIS FILE!!! .. Generated automatically from Godot engine sources. .. Generator: https://github.com/godotengine/godot/tree/3.6/doc/tools/make_rst.py. .. XML source: https://github.com/godotengine/godot/tree/3.6/doc/classes/FuncRef.xml. .. _class_FuncRef: FuncRef ======= **Inherits:** :ref:`Reference` **<** :ref:`Object` Reference to a function in an object. .. rst-class:: classref-introduction-group Description ----------- In GDScript, functions are not *first-class objects*. This means it is impossible to store them directly as variables, return them from another function, or pass them as arguments. However, by creating a **FuncRef** using the :ref:`@GDScript.funcref` function, a reference to a function in a given object can be created, passed around and called. .. rst-class:: classref-reftable-group Properties ---------- .. table:: :widths: auto +-----------------------------+--------------------------------------------------+--------+ | :ref:`String` | :ref:`function` | ``""`` | +-----------------------------+--------------------------------------------------+--------+ .. rst-class:: classref-reftable-group Methods ------- .. table:: :widths: auto +-------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`call_func` **(** ... **)** |vararg| | +-------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`Variant` | :ref:`call_funcv` **(** :ref:`Array` arg_array **)** | +-------------------------------+---------------------------------------------------------------------------------------------------------+ | :ref:`bool` | :ref:`is_valid` **(** **)** |const| | +-------------------------------+---------------------------------------------------------------------------------------------------------+ | void | :ref:`set_instance` **(** :ref:`Object` instance **)** | +-------------------------------+---------------------------------------------------------------------------------------------------------+ .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Property Descriptions --------------------- .. _class_FuncRef_property_function: .. rst-class:: classref-property :ref:`String` **function** = ``""`` .. rst-class:: classref-property-setget - void **set_function** **(** :ref:`String` value **)** - :ref:`String` **get_function** **(** **)** The name of the referenced function. .. rst-class:: classref-section-separator ---- .. rst-class:: classref-descriptions-group Method Descriptions ------------------- .. _class_FuncRef_method_call_func: .. rst-class:: classref-method :ref:`Variant` **call_func** **(** ... **)** |vararg| Calls the referenced function previously set in :ref:`function` or :ref:`@GDScript.funcref`. .. rst-class:: classref-item-separator ---- .. _class_FuncRef_method_call_funcv: .. rst-class:: classref-method :ref:`Variant` **call_funcv** **(** :ref:`Array` arg_array **)** Calls the referenced function previously set in :ref:`function` or :ref:`@GDScript.funcref`. Contrarily to :ref:`call_func`, this method does not support a variable number of arguments but expects all parameters to be passed via a single :ref:`Array`. .. rst-class:: classref-item-separator ---- .. _class_FuncRef_method_is_valid: .. rst-class:: classref-method :ref:`bool` **is_valid** **(** **)** |const| Returns whether the object still exists and has the function assigned. .. rst-class:: classref-item-separator ---- .. _class_FuncRef_method_set_instance: .. rst-class:: classref-method void **set_instance** **(** :ref:`Object` instance **)** The object containing the referenced function. This object must be of a type actually inheriting from :ref:`Object`, not a built-in type such as :ref:`int`, :ref:`Vector2` or :ref:`Dictionary`. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)` .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)` .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)` .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`