在游戏中,每帧都应该更新许多实体。我玩弄不同的设计模式来实现这一点。到目前为止,我有一个单例管理器类,每个 Logic 实例都添加到其中。但我正在考虑以下内容,即 Logic 类本身中的静态列表。这很好,因为它会从项目中删除一个类。本例中的“Engine”是调用 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);
}
};
- 这种模式有名字吗?
- 您认为这比单例管理器类更好吗?
- 还有其他意见或警告吗?