続・Godot4.3(C#) シグナルの書き方メモ

以下のようなクラスを作った。
ゲームではありがちなコンボを管理するクラスだ。

このクラスのコンボ数が変化すると通知をするということになる。

using Godot;

public partial class ComboManager : Node
{
    [Signal]
    public delegate void ComboCountChangedEventHandler(int comboCount);

    private int comboCount = 0;

	public override void _Ready()
	{
        GD.Print("ComboManager 読み込み確認");
    }

    public void IncrementCombo()
    {
        comboCount++;
        EmitSignal(nameof(ComboCountChanged), comboCount);
    }

    public void ResetCombo()
    {
        comboCount = 0;
        EmitSignal(nameof(ComboCountChanged), comboCount);
    }

    public int GetComboCount()
    {
        return comboCount;
    }
}

---

受信側で接続するのだが、「ComboCountChangedEventHandler」という文字列を使うと失敗する。

「ComboCountChanged」というところだけ記述し、「EventHandler」という文字を削除する必要があった。

        // シグナルに接続
comboManager.Connect(nameof(ComboManager.ComboCountChanged), new Callable(this, nameof(_OnComboCountChanged)));

こんな感じ。

「EventHandler」と言う文字をなぜ消さなければいけないのかは知らんけど、これで動いたのでオッケー。

過去記事でも全く同じ話をしたかもしれんが知らん。復習して勉強中。

使っているのChatGPTとGeminiに聞いてみたが、全く別の話をしているので詰んでいた。

困ったものだ。