OnStateChanged
method は、StateChanged
イベントをトリガーするメソッドです。このイベントを処理するメソッドではありません。そのため、FunctionCalledWhenStateChanges
メソッドを追加しました。
public abstract class GameStateBehaviour
{
public event EventHandler<GameStateEvents> StateChanged;
protected GameStateBehaviour()
{
StateChanged += (sender, events) => FunctionCalledWhenStateChanges();
}
public virtual void FunctionCalledWhenStateChanges()
{
// The called function
}
protected void OnStateChanged(GameStateEvents e)
{
if (StateChanged != null) StateChanged(this, e);
}
}
上記のソリューションは、独自のイベントを処理します。独自のイベントに応答するのではなく、テンプレート メソッド パターンを実装する方が良いと思います。ただし、イベントをどこでスローするかわからないと思います。