ゲームでは、フレームごとに多くのエンティティを更新する必要があります。これを実現するために、さまざまなデザインパターンをいじっています。これまで、Ive にはすべての Logic インスタンスが追加されるシングルトン マネージャー クラスがありました。しかし、ロジッククラス自体の静的リストである次のことを検討しています。プロジェクトからクラスを削除するので、これは素晴らしいことです。この例の「エンジン」は、update_all を呼び出すマスター クラスになります。
class Logic
{
public:
Logic() { all.push_back(this); }
virtual ~Logic() { all.erase(this); }
virtual void update(float deltatime) = 0;
private:
friend Engine;
static std::list<Logic*> all;
static void update_all(float deltatime)
{
for (std::list::iterator i = all.begin(); i!=all.end(); ++i)
(*i)->update(deltatime);
}
};
- このパターンに名前はありますか?
- これは、シングルトン マネージャー クラスよりも優れたアプローチだと思いますか?
- その他のコメントや注意事項はありますか?