(Godot4) Tweenが動かないのは、Pausedのせいかもしれないという話

GetTree().Paused = true;

このコードは、プログラムを停止することができるコードだ。

私はバトルが終了時にこれを使っている。

そして、問題がおきた。このコードがあると当たり前だけど他のプログラムは止まるので、何をしても動かない。

ちょっとTweenを使ってバトル終了後にお金でも獲得したことをアピールしてみようと思って動かそうとしたが動かなかった。

「なぜ?なぜ?」

もちろん、「GetTree().Paused = true;」という」コードを書いているから動かないのだ。

しかし、これを書いたことを忘れていると大変なことになる。

「動かないとき=何かエラーがある」と思ってしまうからだ。

いろいろ考えた。というかエディターにエラーの文字はない。だからこそ余計に考えてしまう。

まず、_Readyで動かしてみるとtween自体は動いていた。だからコードはあっている。

なぜ、動かないだ?・・・。 ということで閃いた。先日書いたこいつが悪さをしているのだ。

ということで解決した。

        Tween tween = GetTree().CreateTween();
        tween.SetPauseMode(Tween.TweenPauseMode.Process);

解決するにはこのように書けばいい。たった一行である。

ちなみに私はGodotでの開発はC#しか使っていない。

ChatGPTに聞いても私がPausedをしているという想定はしていないので、全然違う答えを書いてくる。

結局自力で思い出すしかなかった。あぶなかった。一時間近い時間が溶けたと思うが、次からもうはまらないので、よしとしよう。

ということで、エラーなくプログラムが動かないときは、「GetTree().Paused = true;」をしたかどうかを思い出すと幸せになれるかもしれない。