android - Libgdx - 渲染许多小 Sprite VS 一些大 Sprite

标签 android ios performance libgdx rendering

我正在为我的游戏制作一个效果,其中有几颗(200)颗星星从屏幕边缘射出,向中间移动,同时淡出。

我想单独渲染每颗星星(因为它是自己的对象),以便星星可以具有随机速度、淡入淡出时间、大小和位置。然而,我担心它可能会极大地影响旧手机的性能,更改 Alpha 并渲染每帧 200 个 Sprite ,持续长达 20 秒(当它们淡出时我会重新创建它们)。

作为替代方案,我可以使用更大的星星 block 作为相同的 Sprite (一个图像),这意味着我将不得不牺牲随机效果,并且星星会同时淡出,这看起来不会那么好。

我无法在旧手机上进行测试,所以我会在这里问,每帧循环 200 个 Sprite 是否太多(我改变每帧和位置的 alpha 的小图像)?有没有一种替代方案不会强制我放弃每颗星星的随机行为?或者我是否必须硬着头皮渲染更大的图像(可能是 3-4 个不同的图像,每个图像中有几颗星星)?

最佳答案

您可以尝试使用 Flyweight pattern ,可以找到很好的解释和教程here 。基本上,您要做的就是获得 Sprite 的默认模型(在本例中为星星),然后将其绘制在不同的位置。

您不必牺牲您提到的随机效果,只需将其适应您的模型,以便每个对象可以同时具有淡出效果。在附加的示例中,它们改变了网格的位置,但我想您可以扩展它以允许改变其他参数。

另外,请检查this part libgdx wiki 的讨论性能调整的地方。

另一个选择是检查您的应用性能(CPU、GPU、内存的使用情况,大多数 IDE 都有工具来测量这些性能),然后与旧手机的性能统计数据进行比较。

但是,如果您想包括旧手机,我想最终您将不得不在这些型号中测试此应用程序。

关于android - Libgdx - 渲染许多小 Sprite VS 一些大 Sprite ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041216/

相关文章:

android - 如何使用 dec1/Boost-for-Android 使用 NDK r18b 为 Android 构建 boost 1.69.0?

android - 如何正确使用 AsyncTask 以避免 UI 变慢?

android - Eclipse 说我的 SDK 工具已经过时了

javascript - 在 iOS Safari 中,getUserMedia 的权限在一分钟内超时

ios - Cordova - ios 按需资源

ios - typedef struct 与 Object - 优点

performance - Z3:if-then-else 与命题逻辑的性能对比

android - 我可以更改 Firebase Auth UI 的身份验证流程吗?

javascript - 在WebGL程序中使用uniform[1234][uif]设置制服: is the vector version [v] better in any regard?

android - Fresco 图片加载回调