LibGDX Stage vs SpriteBatch绘制游戏

时间:2014-03-09 15:54:36

标签: java 2d libgdx game-engine game-physics

LibGDX中的绘图存在很大问题。首先,我不会在游戏中使用每一个物理或其他复杂的东西。我只绘制精灵并将矩形放在此处以进行碰撞检测。我的游戏中有3个屏幕:飞溅,菜单和游戏。所以我在启动和菜单屏幕中使用了一个舞台,但是如果我在游戏中使用舞台或者使用SpriteBatch绘制,我也不会这样做?舞台在动作方面确实很有优势,但使用Actors会更复杂一些。还有其他方法吗?我不想使用World,因为它会让游戏开始变得复杂化。 我想用什么游戏?

2 个答案:

答案 0 :(得分:18)

实际上,您始终使用SpriteBatch进行绘制,因为Stage使用自己的SpriteBatch。如果您认为自己可能需要Scene2d Stage的某些优势,例如Action s,Group或其他内容,则应使用Stage。在我看来,这很容易使用。您拥有自己的对象,扩展ImageActor,覆盖其update(delta)方法,您可以在其中检查Actor是否应移动(Keypressed或AI事件) 。你也应该检测那里的碰撞并注意它们。然后,如果您要延长Image,则无需关心绘图(但Image需要Drawable s,因此Animation s会遇到一些问题,如果您正在延长Actor覆盖draw(SpriteBatch batch),您可以在其中调用batch.draw(...)。 而已。 Stage的一大缺点是排序。首先绘制的Actor位于后台。最后Actor透支了所有其他人并且在前景中。您可以使用z-Index对它们进行排序,但这不是很确定。 因此,您可以决定使用自己的Stage种类(它或多或少是一个包含所有Actor的列表,当调用updatedraw时,它为此列表中的每个Actor调用,并在那里添加自己的排序。 这取决于您的游戏设计,您的意见和风格。查看一些教程/示例,并决定如何创建游戏。

答案 1 :(得分:12)

您可以使用其中之一,这取决于您创建的游戏类型。但无论如何,不创建 SpriteBatch的多个实例 - 而只创建一个并将其传递给Stage构造函数,因为它是重物。 (是的,Stage使用引擎盖下的SpriteBatch) 此外,如果您需要任何屏幕控制(按钮,操纵杆等),Stage可能非常有用,因为您可以使用scene2d.ui中的类而不重新发明轮子(一些轮子不是很容易重新发明)