我在Libgdx制作赛车游戏。我的游戏apk大小是9.92 mb,而我使用的是四个总大小的纹理包装器是9.92 Mb。我的游戏在桌面上运行,但它在Android设备上运行速度非常慢。它背后的原因是什么?
答案 0 :(得分:33)
编程时我们忽略了一些漏洞。 桌面处理器功能更强大,因此游戏可以在桌面上流畅运行,但在移动设备上可能会变慢。
以下为优化游戏流程应遵循的一些关键注意事项:
如果调用垃圾收集器,请尝试检查logcat。如果是这样,那么尝试使用对象类的finalize方法来查找哪些类对象被收集为垃圾并尝试对其进行改进。
祝你好运。答案 1 :(得分:17)
我有一些提高性能的其他提示:
顺便说一句,没有任何额外的信息,没有人会给你一个好的或精确的答案。如果您认为为您的问题撰写足够的文本或信息是不值得的,那为什么值得回答呢?
答案 2 :(得分:1)
要真正了解游戏运行缓慢的原因,您需要对自己的应用进行分析。
可以使用免费工具。
在桌面上,您可以使用VisualVM。 在Android上,您可以使用Android Monitor。
通过剖析,你会发现哪些方法占用的时间最多。
减速的可能原因是纹理绑定。你经常在不同的打包纹理页面之间切换吗?在切换到另一个页面之前,尝试从一个页面绘制所有内容。
答案 3 :(得分:1)
答案可能只是“计算机快速;手机速度慢”。相反,重要的是要注意,您的计算机Java VM可能是Oracles非常优化的JVM,而您的手机的Java VM可能是Dalvik,对于其性能而言,它没有对对象创建和管理进行相同的优化。 / p>
正如其他人所说,libGDX正是出于这个原因提供了一个Pool类。看看这里:https://github.com/libgdx/libgdx/wiki/Memory-management
答案 4 :(得分:0)
LibGDX中一个非常重要的事情是你应该确保有时从内存加载资产不能进入render()方法。确保您在正确的时间加载资源,并且它们不会进入渲染方法。
另一个非常重要的事情是尝试计算你的数学并使其独立于渲染,因为你的下一帧不应该等待计算发生......!
这是我在制作Snake game Tutorial时遇到的两件大事
谢谢,
Abhijeet。
答案 5 :(得分:0)
我发现的一件事是绘画是滞后的。这意味着如果您要绘制屏幕外项目,那么它会使用大量无用的资源。如果你只是在绘图之前检查它们是否在屏幕上,那么你的表现会令人惊讶地提高。
答案 6 :(得分:0)
需要思考的问题(来自个人经历)
不要继续在渲染方法中调用一个函数来更新时间,HUD上的分数(仅在需要时才进行这些更新,例如当分数仅增加时更新分数等)
根据具体情况拨打电话(在某种情况下进行更新,而非所有时间) 例如。在60FPS的渲染方法中调用/更新 - 意味着你需要每秒更新一次,每秒更新60次)
这些要点会对表现产生巨大影响(竖起大拇指)
答案 7 :(得分:-3)
您需要检查游戏的图像大小。如果图像大小超过图像大小,请使用以下链接“http://tinypng.org/”。 它会对你有帮助。