Godot和GDScript可以将函数存储在变量中吗?

发光坚果

GDScript语言使我对Godot Docs感到困惑在页面的大约中间,在“引用函数”部分中,它说您不能将函数存储在变量中,然后似乎立即自相矛盾。

Godot函数是否可以存储在变量中?

引用功能

与Python相反,函数不是GDScript中的一流对象。这意味着它们不能存储在变量中不能作为参数传递给另一个函数或从其他函数返回。这是出于性能原因。

要在运行时按名称引用函数(例如,将其存储在变量中或将其作为参数传递给另一个函数),必须使用call或funcref助手:

你好

GDScript函数不是像python中那样的对象。因此,您不能直接引用函数。

但是,您可以使用它们的关联实例按名称间接引用它们。

例如,具有以下功能:

func hello():
    print('Hello')

您可以按名称在实例上调用函数:

call('hello') # prints 'Hello'

您可以使用来存储实例和函数名称funcref()

var ref = funcref(hello_object_instance, 'hello')
ref.call_func() # prints 'Hello'
takes_func_ref_to_call_later(ref) # later, prints 'Hello'

FuncRef.call_func()所做的事情与将Object.call()其包装在一个对象中相同。

因此,如Object.connect()和朋友所示,回调函数的常见模式是:

func deferred_finish(param1, param2, callback_obj, callback_func):
    # ... do something
    callback_ref = funcref(callback_obj, callback_func)
func _process(delta):
    if _finished:
        callback_ref.call_func()
func _enter_tree():
    deferred_finish('hello', 'world', self, 'finished_callback')

我希望这有帮助。让我知道您是否需要任何澄清。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

您可以将函数存储在变量中吗?

将函数和Class实例存储在redux存储中可以吗?

将变量和函数存储在字典中,这是正确的方法吗?

可以将 useState 的状态存储在变量中吗?

我可以将 jQuery 事件存储在变量中吗?

是否可以将函数及其参数存储在变量中?

是否可以将函数调用存储在动态变量中?

函数可以在C中同时返回数组和变量吗?

我可以执行存储在 Python 字典中的变量中的函数吗?

我可以将函数存储在键值对中,其中函数是 JavaScript 的键吗?

我可以将可组合函数存储在变量中吗?

我可以在Swift中将存储在变量中的函数用作运算符吗?

我们可以将“ cd ..”路径存储在bash文件中的变量中吗?

我可以将表搜索中的值存储在变量中吗?

在 Godot GDscript 中翻译骨架中的骨骼

Rails将systemcall存储在变量中吗?

我可以在函数中测试变量吗?

可以在递归函数中清除变量吗?

函数中的变量可以以后使用吗?

如何使用 Gdscript 在 Godot 中以自定义 fps 运行函数

我可以将正则表达式的求值存储到变量中吗?

将JQuery选择器的结果存储在变量中可以吗?

我们可以将@yield的值存储在变量中吗

Flutter:可以将依赖关系存储在build方法之外的Widget实例变量中吗?

我可以使用JavaScript将Fetch的结果存储在全局变量中吗?

我可以将Cookie的Cookie值集存储到php变量中吗?

我可以使用 javascript 将重定向的 url 存储到变量中吗?

我可以将这些选定的过滤器存储在变量中吗?

将函数名称存储在变量中并使用变量调用函数是一种不好的做法吗?