为了动态创建游戏对象,我使用ObjectTypeID,它是unsigned int,并让它在很长的switch()语句中进行比较.如果找到适当的swith case,我创建对象并存储它.因为我已经拥有90个游戏对象,所以Switch()已经很长并且将增长到大约300个对象.
为了避免超长的switch()语句,并提高速度,完美的候选者将利用索引数组来存储所有对象类型(ObjectTypeID从0向上增加).有没有办法,如何在数组中存储对象类型?
我想用这样的东西:
请问如何在我的情况下如何利用动态数组索引,以及如何避免超长的switch()语句?您的建议可能与我的想法不同,关键是使用数组索引并删除long switch()语句.
在c ++中,类不是第一类对象,因此您无法直接执行所需的操作.但是,如果游戏对象继承自公共基类,则只需使用工厂.
class GameObject {
};
class GameObjectFactory {
public:
virtual GameObject * create() = 0;
};
class SomeGameObject : public GameObject {
};
class SomeGameObjectFactory : public GameObjectFactory {
virtual GameObject * create() { return new SomeGameObject; }
};
Run Code Online (Sandbox Code Playgroud)
然后将工厂实例存储在数组中.