【发布时间】:2017-09-11 12:11:09
【问题描述】:
我对 MonoGame/XNA 很陌生,对于我的第一个实际游戏,我想我会尝试重新创建太空入侵者。为了处理入侵者的运动,我创建了一个“InvaderManager”类来处理这一切。然后我创建了另一个名为“EntityManager”的类来处理所有其他类型的实体,例如子弹。
虽然这些类只能在我的“MainGame”类中访问,但它可以正常工作,该类处理实际的游戏含义,例如,当我希望“Bullet”类中的碰撞代码与一个入侵者发生碰撞时移除它(意味着它必须访问“InvaderManager”类),它变得有点尴尬,基本上导致我在这些管理器类中将函数设为静态,因此外部类可以在没有实例的情况下访问调用它们。
for(int i = 0; i < InvaderManager.spaceInvaders.Count; i++)
{
if(CollisionDetect(InvaderManager.spaceInvaders[i]))
{
EntityManager.Remove(this);
InvaderManager.Remove(InvaderManager.spaceInvaders[i]);
}
}
这当然可行,但有些东西告诉我这不是一个好方法,所以我想我会问这个论坛是否有更好的方法来处理这一切?或者为了我所说的目的,将某些功能设为静态可以吗?
【问题讨论】:
-
不要在每个类中处理该逻辑,该逻辑应该在您的游戏引擎中处理。这将使您的代码更快,并且您不会遇到这些问题。