(Godot)CallDeferredが便利な件

CallDeferred();

これを知っているのと知らないとでは全然違う。

これは何か? 

すべてのシーンの_Ready()が実行されてから実行するメソッドだ。

これによって、UI等のロードが全て終わったタイミングで実行することができる。
それで、何が嬉しいのかといえば、Getnodeができるようになるという利点がある。

    
public override void _Ready(){
    CallDeferred(nameof(AfterReady));
}

private void AfterReady()
{
        
}

私の場合は、「シグナル」を使う時にハマって、これを知った。

(ChatGPTが教えてくれた。)

子ノード同士でシグナルを送るとき、相手のノードがまだ読み込まれていないと取得することができず、どうしたもんかと思っていた。全てaddchildが終わってから実行すれば取得できるので1フレーム待つ必要があった。そういうやり方もあるのだが、CallDeferredというものが用意されていた。

これを使うことで無事解決。 まあ詳しくはChatGPTに聞いてみてくれ。