dil*_*lix 11 performance android freeze game-physics andengine
我在游戏中使用java + AndEngine.
在游戏中我有一些冻结,我寻找信息,并找到了如何优化游戏性能的一些步骤:
我遵循了这些步骤,但从来没有在游戏过程中遇到过一些冻结.
现在我在游戏开始之前创建并加载所有纹理并且不卸载它们,这是一个坏主意吗?我如何优化游戏过程?也许我必须在主要活动之前释放所有可能的内存,然后在每个级别之后重新加载它们?
Nic*_*ich 16
仅供参考:AndEngine的下一个版本(即将于12月中旬开始)运动GLES2,因此您可以通过自定义着色器和实体提高性能.
它还将在GL-Thread的第一帧上执行启动管道(onLoadEngine/onLoadResources/onLoadScene/onLoadComplete),而不是在UI-Thread上直接执行阻塞(直接在onCreate中).
此外,它允许您轻松地将管道阶段卸载到线程中,而不会破坏整个管道.将会有一个非常简单的实现BaseGameActivity的子类,它在执行管道阶段时显示确定的ProgressDialog.实体将在它们附加到场景时弹出.
通常这意味着,实际装载时间减少了,更重要的是,毛毡装载时间明显减少了!与之前的痛苦相反,创建加载屏幕非常简单.
AZ_*_*AZ_ 12
您可以使用AndEngine 提高性能:使用对象池http://c0deattack.wordpress.com/2011/01/06/andengine-using-the-object-pool/
您可能需要发布一些有关游戏的更具体的信息,但有一个建议是确保您重新使用精灵和对象.例如,如果您的游戏中有任何类型的对象重复生成(随机飞行的敌人,子弹,重复背景元素),请尝试一次考虑屏幕上需要的最大对象数量然后创建那么多在游戏开始之前,根据需要加载和重置它们.
例如,我的游戏使用从屏幕顶部"随机"飞入的敌人.起初我每次打电话都是在制造一个新的敌人,但现在我有一个ArrayList,它总共只包含6个敌人,可以重复使用并且每次移动数百次.这为我带来了巨大的性能提升,尤其是在较长的游戏时段.这与GC优化有关,但您之前可能没有关于优化的内容.
在进行抢先优化之前首先分析代码的重要性不容小觑.如果你受GPU限制,优化所有精灵等没有什么意义(这是不太可能的,但是当你使用GLES2.0和可编程管道时,因为我们不知道你是如何编写GLSL代码的,所以它是可能的).
您可以使用一些工具进行分析,因为要分析的内容有所不同.
对于内存分析,您可以使用DDMS和traceview来检查内存分配以及在特定时间段内调用GC的频率.这个问题有详细说明:
关于经常运行的代码,您可以自己计时并将结果写入日志文件.它有点劳动密集,但您可能已经知道自己的代码可能在哪里慢.
| 归档时间: |
|
| 查看次数: |
6812 次 |
| 最近记录: |