以下のようなクラスを作った。
ゲームではありがちなコンボを管理するクラスだ。
このクラスのコンボ数が変化すると通知をするということになる。
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に聞いてみたが、全く別の話をしているので詰んでいた。
困ったものだ。