めざせお手軽で富豪的なSTGアーキテクチャー(4)
オブジェクトの管理について。
生成されたオブジェクトを管理して、そいつらのタスク(制御処理と描画処理)を呼び出す係が必要になりますので、それをGmObjectManagerとでもしておきます。
GmObjectManagerへのGmObjectの登録ですが、生成をGmObjectManagerで行うのであれば特に問題ないんですが、今回はGmObject派生クラスのCreateInstanceで行うようにするので(その3参照)その手は使えません。代わりに、インスタンスプールの時にそうしたように、GmObjectにCreateInstanceが呼ばれたときに発動するイベントを仕込んで、CreateInstanceからそれを発火させます。
public class GmObject { public static EventHandler OnCreated; } public class GmBullet : GmObject { public static GmBullet CreateInstance(){ GmBullet newBullet = new GmBullet(); OnCreated(newBullet, null); return newBullet; } } public class GmObjectmanager(){ public GmObjectManager(){ GmObject.OnCreated += this.registorGmObject; } }
これで、オブジェクトを生成すれば自動的に管理下に入るようになりました。