Rendimento sempre ⚠ retorno da função em Godot

Corrotinas e sinais são recursos poderosos para o motor de jogo Godot . Isso me lembra as corrotinas da lua . Eu o uso muito até que tive um problema.

yield(node_instance, signal_name)

A linha acima interrompe a execução da função atual e aguarda para node_instanceenviar o signal_namecom a instrução:

node_instance.emit_signal(signal_name)

Um dia, coloquei a yieldinstrução dentro de uma espécie de função getter que usa a returnpalavra chave. Foi sem contar o fato de que yield voltamos da função . Na verdade, ele retorna uma instância de um GDFunctionState usado para resumea função.

# The getter
func get_thing
():
a_node
.call_deferred("execute")
return yield(a_node,"executed")

# In the a_node script:
signal executed
(val)
func execute
():
OS
.delay_msecs(100)
emit_signal
("executed",123)

O exemplo acima não funciona: get_thingretornará um em GDFunctionStatevez de 123.