我正在开发一款简单的移动游戏。我是初学者/中级。我的游戏是一个简单的无尽的跑步者,像疯狂的出租车,你跳过其他车。对于环境,我使用了一个低polly免费资产包。游戏在我的笔记本电脑上完美运行但是当我构建了一个apk并在几台设备上检查时它的滞后很多。
我使用了低聚资产,所以我认为这不是问题。我知道移动设备的资源要少得多,所以如何解决这个问题或将来避免使用它?我在应用程序商店看到很多顶级游戏,包括如此多的游戏和许多粒子效果以及许多统一游戏,那么这些人如何做到这一点呢?
尝试解决:
我做了很多研究,但我真的不明白。我读了一些关于移动着色器的内容。因此我认为我会将资产上的着色器更改为移动/漫反射标准,但是当我这样做时,许多资产会丢失整个纹理/颜色并变为白色。
我尝试的第二件事是构建屏幕上的纹理压缩选项。有像DXT,ETC,ETC2,PVRTC等选项,我一个接一个地尝试了所有这些,但似乎并没有太大的区别。
最后我决定看一下分析器。这是我第一次使用个人资料。关于这些问题,初学者在网上的资料确实很多。在分析器中我注意到最多的CPU使用是因为Camera.Render,它通常需要9毫秒的平均时间。其余的事情通常需要大大减少时间,大多数时间需要〜0.1。我不知道9ms意味着什么,或者它是不是很重要。我只是有一个简单的相机脚本将相机移到播放器后面。
我尝试简化了环境,导致价值下降了一些,比如约7毫秒,但我让场景非常简单,我不想要我想创造一个美丽的环境。
最后一件事,自从它无尽的跑步者以来,我有5个预制件用于我的道路,我正在删除并实例化它们。我知道这不是一个好习惯而是我应该只使用一个池,但这可能是滞后的原因吗?我没有完成对象池的原因是,在一开始我必须在我的游泳池中产生50个预制件,每种类型10个,这对于5个预制件来说理想情况下我希望我的道路上有各种各样的预制件,所以环境看起来不重复。如果有人可以提供帮助,我将永远感激不尽。
/ e我已将设置设置为非常低我已停止自动生成光照并禁用阴影。
这开始变得越来越没有希望了。我不知道如何以任何方式接近< 50批次计数。上面的屏幕截图使用简单的3d立方体对象,但仍然给我20-30的批次计数。在我添加一些资产以使场景更漂亮的那一刻,它上升并开始滞后于我的手机。
答案 0 :(得分:2)
Drawcalls和shadow。我会在几个小时内给你更好更大的答案,因为我现在正在工作但是阅读了关于drawcalls和在Edit->项目设置 - >质量 - > Android将所有内容设置为低并禁用阴影。移动设备不能很好地渲染动态光源和阴影。此外 - 你应该使用游泳池系统,因为使用大型预制件它可以真正减慢游戏速度并使其冻结在预制件上。在低端 - 中端设备上,drawcalls(目前称为统一批处理)可能是一个巨大的瓶颈。在unity3d游戏窗口中按统计数据,看看你有多少批次。对于移动设备,最多应该在10到30左右,至少在我的体验中。
答案 1 :(得分:0)
这些低多边形资产实际上不是那么低的移动多边形,它们有许多不同的材料,并且由许多子对象组成。此外,如果您使用地形将其更改为平面。最重要的是动态闪电和阴影。