我在开发游戏时遇到了一个奇怪的问题。所以我创建了一个渲染方法,其中 Sprite 按特定顺序绘制以创建深度感。如果这是有道理的。所以背景图 block 首先被渲染,然后是在背景图 block 之后绘制的 map 特征,因此它们出现在背景图 block 上方。现在的问题是,这个系统在我的桌面上工作得很好,我得到了想要的行为。但是,在我的安卓设备或任何安卓模拟器上, Sprite 的绘制顺序似乎被忽略了。我在背景图 block 之后绘制的 map 要素不显示,因为它们被背景图 block 阻挡,即使它们是在图 block 之后绘制的。当一小部分“树” Sprite 显示在 map 边缘时,我注意到了这一点,因为它没有被背景图 block 完全阻挡。我将上传图片进行演示。
这是它在我的桌面上的样子。非常好。 map 特征确实绘制在背景图 block 的顶部并且没有问题。我测试了我的深度方法,看看我是否错误地实现了它。所有测试在我的桌面上都运行良好。我可以成功渲染不同深度的 Sprite 。
这就是它在安卓设备/模拟器上的样子。完全相同的代码。请注意从屏幕边缘冒出来的树。它的底部被瓷砖挡住了。所以只渲染了它的上半部分。我尝试为瓷砖使用半透明纹理。我能够看到所有 map 功能。所以我知道纹理加载得很好,问题出在其他地方。我也不认为这是代码问题,因为它在我的桌面上运行良好。
有没有人有类似的想法或经历过类似的事情?
最佳答案
所以我想通了。我已经在 HashMap 中收集了每个深度,并将深度(整数)用作键,并使用遍历其键集的 for 循环对其进行了迭代。这样我就无法直接控制迭代顺序。在我的桌面上迭代键集的顺序不同。 android 环境遵循不同的迭代,因此深度没有按照我希望的顺序呈现。我改用了一个列表,并使用我想要的顺序遍历它。它奏效了。
关于java - Libgdx Sprite 深度在 Android 上与在桌面上不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34125294/