我在我的游戏中使用 java + AndEngine。
在游戏过程中我遇到了一些卡顿,我查找了信息并找到了一些如何优化游戏性能的步骤:
- 避免GC(垃圾收集器)
在游戏的主要动作中调用:
a) 游戏时不要创建物体;
b) 不要创建不必要的对象;
- 优化重复次数较多的代码
经常
我遵循了这些步骤,但在游戏过程中我还是遇到了一些冻结。
现在我在游戏开始之前创建并加载所有纹理并且不卸载它们,这是一个坏主意吗?如何优化游戏流程?
也许我必须在主要活动之前释放所有可能的内存,然后在每个级别之后重新加载它们?
- 减小纹理尺寸。
- 减少纹理切换(也称为尝试使用 spritesheet,以便尽可能少地更改纹理)
- 使用较低质量的纹理(RGBA4444 或 RGB565 而不是 RGBA8888)。
- 在实体不需要更新的情况下调用 setIgnoreUpdate。
-
如果可能的话使用 SpriteBatches http://www.andengine.org/forums/updates/spritebatch-2x-performance-improvement-anyone-t3613-10.html.
供参考:
AndEngine 的下一版本(将于 12 月中旬发布)支持 GLES2,因此您有更多的可能性通过自定义着色器和实体来提高性能。
它还将在 GL 线程的第一帧上执行启动管道 (onLoadEngine/onLoadResources/onLoadScene/onLoadComplete),而不是在 UI 线程上阻塞(直接在 onCreate 中)。
它还允许您轻松地将管道的各个阶段卸载到线程中,而不会破坏整个管道。将有一个非常简单的 BaseGameActivity 子类的实现,它在执行管道的各个阶段时显示确定的 ProgressDialog。实体在附加到场景时会弹出。
一般来说,这意味着实际加载时间减少,更重要的是,毛毡加载时间显着减少!创建加载屏幕非常简单,与之前的痛苦相反。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)