对高效动画相当无知,所以所有帮助表示赞赏!我在 java 中使用 libgdx,我的游戏中有 128px 的水砖需要动画。我目前正在为动画使用 19 帧,但我已将该数字从 2-19 更改为从超过 60fps(上限为 60)到 20fps。
我唯一能想到的就是反复调用以获得正确的纹理,因为我使用的是相当强大的显卡,它可以非常轻松地处理带有更多动画的 java 游戏。如何在这里提高性能?
干杯
对高效动画相当无知,所以所有帮助表示赞赏!我在 java 中使用 libgdx,我的游戏中有 128px 的水砖需要动画。我目前正在为动画使用 19 帧,但我已将该数字从 2-19 更改为从超过 60fps(上限为 60)到 20fps。
我唯一能想到的就是反复调用以获得正确的纹理,因为我使用的是相当强大的显卡,它可以非常轻松地处理带有更多动画的 java 游戏。如何在这里提高性能?
干杯
使用分析器找出时间花在哪里。您可以使用分析工具,或者只是在代码中添加时间戳(我使用 java.lang.System.nanotime())检查,并保留直方图以定期打印或打印“异常值”,甚至在屏幕上绘制结果。
虽然您或我可能能够猜出时间的去向,但拥有工具来帮助您实际找出时间花费的地方会更有效率。
使用分析器的答案是很好的建议。但是,如果您还没有打包纹理,那么这样做是个好主意,因为这会减少正在使用的纹理数量,进而会减少(相对昂贵的)纹理切换的数量。鉴于您有方形纹理,您可以平铺它们。
这就留下了纹理可以有多大的问题。这取决于设备,此处针对 Android 设备进行了讨论。
即使将相对较少数量的纹理打包到单个纹理中,仍然会减少纹理切换的数量。例如,1024px x 1024px 的纹理大小限制将允许您打包 64 个 128x128 纹理。这将满足您对 19 个纹理的要求,而无需纹理切换。同样,512px x 512px 的纹理大小限制将允许您打包 16 个 128x128 纹理,因此只需要一个纹理切换。