GDScript函数不像Python中的函数那样是对象。因此,您无法直接引用函数。
但是,您可以通过使用它们关联的实例按名称间接引用它们。
例如,使用以下函数:
func hello():
print('Hello')
您可以通过名称在实例上调用函数:
您可以通过名称在实例上调用函数:
call('hello') # prints 'Hello'
您可以使用 funcref()
存储一个实例和函数名称:
var ref = funcref(hello_object_instance, 'hello')
ref.call_func()
takes_func_ref_to_call_later(ref)
FuncRef.call_func()
和Object.call()
实际上做着相同的事情,只是前者在一个对象中进行了包装。
因此,在回调函数中常见的模式(例如由Object.connect()
等函数所示)为:
func deferred_finish(param1, param2, callback_obj, callback_func):
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')
希望这可以帮到你,如果你需要任何解释,请告诉我。