2012-11-25 50 views
0

对高效动画相当无知,所有的帮助表示感谢!我在java中使用libgdx,并且在我的游戏中有128px的水砖需要动画。我目前正在使用19帧的动画,但我已经从2-19改变了这个数字,而且我将从60fps(上限为60)改为20fps。Java Frame Animation伤害表现

我唯一能想到的就是重复调用正确的纹理,因为我使用了一个功能强大的图形卡,它非常容易处理带有更多动画的java游戏。我如何提高性能?

干杯

回答

1

使用分析器找出时间被消耗在哪里。您可以使用一个分析工具,或者只是用时间戳(我使用java.lang.System.nanotime())检查来清理代码,并保留一个直方图来定期打印或打印“异常值”,甚至在屏幕上绘制结果。

虽然你或我可能能够猜出时间正在去的地方,但有一些工具可以帮助你真正找出时间花在哪里的效率更高。

0

使用探查器的答案是很好的建议。但是,如果您尚未打包纹理,那么最好这样做,因为这会减少正在使用的纹理数量,从而减少纹理开关的数量(相对昂贵)。鉴于你有方形纹理,你可以将它们拼贴。

这留下了纹理可以有多大的问题。这是依赖于设备的,针对Android设备讨论here

即使将相对较少数量的纹理封装到单个纹理中,也会减少纹理开关的数量。例如,1024 x 1024像素的纹理大小限制将允许您打包64个128x128纹理。这将适应您对19个纹理的需求,而不需要纹理切换。 同样,512px x 512px的纹理大小限制将允许您打包16个128x128纹理,因此只需要一个纹理开关。