gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 23:27:46 27 4
gpt4 key购买 nike

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

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

Referencing Functions

Contrary to Python, functions are not first class objects in GDScript. This means they cannot be stored in variables, passed as an argument to another function or be returned from other functions. This is for performance reasons.

To reference a function by name at runtime, (e.g. to store it in a variable, or pass it to another function as an argument) one must use the call or funcref helpers:

最佳答案

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()和friends所示,回调函数的常见模式是:
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')
我希望这有帮助。如果您需要任何澄清,请告诉我。

关于function - Godot和GDScript可以将函数存储在变量中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204271/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com