ABl*_*hip 6 java performance android opengl-es libgdx
我正在为Android游戏创建一个UI系统,该系统将具有一个大的(最多4096x4096)背景区域,其中菜单可以放置在该屏幕的任何位置,并且当需要不同的菜单时,相机将飞到该位置.我希望能够略微制作动画,而不是拥有大型静态图像.我想知道的是如何在不滞后设备的情况下有效地完成这项工作.这些是我到目前为止提出的方法,但也许还有更好的方法......
1)背景有3个独立的4096x4096静态层,1个是天空,1个是地形,1个是云和树.每个层都放在彼此的顶部,Z空间略有不同,以便在相机移动时产生一点视差效果.
2)有一个大的静止背景图像,其上面有一层具有个别特定的云,树和其他应该动画的东西的精灵.我认为这可能是最有效的路线,因为我可以选择不为不在视野中的部分制作动画,但它也会限制可重复使用性,因为每个不同的对象都必须手动放置在空间中.我的目标是能够简单地更改资产并能够拥有一个全新的游戏.
3)有一个大的背景层,有几个帧,几乎像一个视频.我觉得这将是性能上最糟糕的(加载几个4096x4096帧并每秒绘制30次不同的帧),但是会直接从After Effects中直接给出我想要的场景.我怀疑这个甚至是可行的,不仅仅是因为绘图,而且Android设备上的存储空间仅用于菜单UI不允许几个6MB帧.
这些都是正确的方向吗?我已经看到了一些类似的问题,但是没有一个问题足够接近我需要的东西(一个不是由瓷砖制成的大而动的背景).
任何帮助表示赞赏.
小智 3
至于你的问题被标记为Android,我会推荐第二个解决方案。
主要原因是解决方案 #1 和 #3 涉及加载大量 4096x4096 纹理。快速计算一下:三个具有这种分辨率的 32 位纹理将使用至少 200MB 的视频 RAM。这意味着你可以立即丢弃很多安卓设备。
另一方面,解决方案#2只涉及两个大纹理:一个大的固定背景图像,以及一个包含特定的云、树精灵的纹理图集......这个解决方案确实更内存友好,并且会导致相同的结果审美输出。
TL;DR:这 3 个解决方案效果很好,但只有第 2 个适合嵌入式设备