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')
我希望这有帮助。如果您需要任何澄清,请告诉我。