我正在将一款游戏从iOS和Windows Phone移植到Android。我正在遵循大部分的代码来自于Windows Phone版本的规则,这是因为它与Java最相似。我的问题涉及到LibGDX中的OrthographicCamera类。
我使用了“游戏对象作为组件容器”的方法来制作这个游戏。你可以在这里阅读相关信息:http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/,以便你了解我在谈论什么。所以,几乎所有游戏中的内容都扩展了组件组件类。每个游戏对象,比如一个球,都是由组件组成的GameObject,例如Sprite、RigidBody(用于物理)、Transform2(位置、旋转等)。这包括Camera2类,它只是包装了一个OrthographicCamera成员。
我有两个问题,我已经做了大量的研究却没有找到答案。我无法弄清楚如何进行分层。游戏有一个抽屉,用户可以向下滑动以打开。这应该在游戏中处于最上方。XNA版本的开发人员实现这一点的方式是通过具有多个SpriteBatches并将每个SpriteBatch视为一个图层。这在LibGDX中行不通,而且使用多个SpriteBatches是不好的实践。问题在于,游戏对象按照树的遍历方式组织,并且它们的渲染顺序基于将对象插入到树中的时间。我已经研究了DecalBatch,这样我就可以使用Z顺序,但这需要大量的重构,因为游戏已经非常接近完成了。正如我所说,我尝试使用多个SpriteBatches,但由于某种原因这也行不通。
由于这已经是一篇很长的文章了,我会在另一篇文章中问我的第二个问题。
我使用了“游戏对象作为组件容器”的方法来制作这个游戏。你可以在这里阅读相关信息:http://cowboyprogramming.com/2007/01/05/evolve-your-heirachy/,以便你了解我在谈论什么。所以,几乎所有游戏中的内容都扩展了组件组件类。每个游戏对象,比如一个球,都是由组件组成的GameObject,例如Sprite、RigidBody(用于物理)、Transform2(位置、旋转等)。这包括Camera2类,它只是包装了一个OrthographicCamera成员。
我有两个问题,我已经做了大量的研究却没有找到答案。我无法弄清楚如何进行分层。游戏有一个抽屉,用户可以向下滑动以打开。这应该在游戏中处于最上方。XNA版本的开发人员实现这一点的方式是通过具有多个SpriteBatches并将每个SpriteBatch视为一个图层。这在LibGDX中行不通,而且使用多个SpriteBatches是不好的实践。问题在于,游戏对象按照树的遍历方式组织,并且它们的渲染顺序基于将对象插入到树中的时间。我已经研究了DecalBatch,这样我就可以使用Z顺序,但这需要大量的重构,因为游戏已经非常接近完成了。正如我所说,我尝试使用多个SpriteBatches,但由于某种原因这也行不通。
由于这已经是一篇很长的文章了,我会在另一篇文章中问我的第二个问题。