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_instance
enviar o signal_name
com a instrução:
node_instance.emit_signal(signal_name)
Um dia, coloquei a yield
instrução dentro de uma espécie de função getter que usa a return
palavra – 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 resume
a 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_thing
retornará um em GDFunctionState
vez de 123
.