Closed folt-a closed 2 years ago
前におっしゃってたのこういうのでしたか~! 確認したところ同じエラーでましたのでちょっと見てみます
await Async.from_signal(get_tree().create_timer(1.0).timeout).wait()
9d08bab, 82d84a3 で修正しました
func _f(signal_: Signal) -> void:
print(signal_.get_object()) # <Freed Object>
_f(get_tree().create_timer(1.0).timeout)
この問題私も困っていたんですが Signal にラップされた後 SceneTreeTimer が解放されてしまい (なぜか発火はするけど) 切断はできないで~てことみたいです。 このケース以外まだ確認してないですが SceneTreeTimer.timeout は解放されてても飛んでくるという特殊挙動だったのでそれ用のフロー設けて対処しました。
報告ありがとうございます。こちらに新しいバージョンを上げました:
うまくいきました!ありがとうございます!!
環境 Windows10 Godot4.0 beta2
drainsに直接Signalを渡しSignalがemitされたときに、disconnectできないエラーが出ます。 処理自体は正常に完了しているように見えます。
Signalを直接ではなくAsync.from_signal()にするとうまくいくので、こちらを使った方が良いでしょうか?
res://addons/godot-nesink/NesinkronaFromSignalAsync.gdで、 CONNECT_ONE_SHOTの代わりに手動でシグナルをdisconnectするとエラーが消えますが、これが良い解決法なのかは分かりません!