【unity】第一次启动项目冷启动优化

0.906字数 952阅读 280

首先肯定是判断游戏在冷启动过程中是在做什么事情消耗了时间,然后针对性地优化。还有就是定义好冷启动的界限,从点击游戏到Unity的闪屏出现这段时间通常定义为冷启动的时间,但是我们项目后来发现在做启动的优化的时候还有很长时间花费在游戏启动之后的一些资源初始化方面。

Unity 冷启动简介
Unity3D游戏如何加快冷启动时间
如何改进Unity3d手游启动速度?
Unity启动耗时优化

我在优化启动时间的过程中没有使用什么特别多的工具,主要是基于mlogcat.exe查看设备上输出信息的log,结合自己加入的一些log来做问题的排查。纯粹的冷启动时间过长,会和Resources目录下的资源有关系,越多越慢。我们是以AssetBundle的方式为主,所以这块注意了下,清理了一些插件引入的确定不需要的资源(直接看打包好的apk里的内容来排查)。另外搜索下还有一些文章说相关问题,可以关注下,这里不赘述。Unity 冷启动简介Unity3D游戏如何加快冷启动时间如何改进Unity3d手游启动速度?Unity启动耗时优化说一下我们遇到的游戏启动时间过长时解决过的几个问题。我们定义启动时间是从点击app图标到进入游戏Patch界面(即游戏逻辑接管)这段时间。

1)Shader编译时长。如果只有游戏安装之后第一次启动时间过长,一个很大的可能是shader编译,之后游戏启动因为有了Cache所以会快很多。这种情况的话建议查看下Always Include的Shader内容和变体,使用shadervariantcollection等方案替代。

2)Tolua绑定和Lua资源加载。这种是每次游戏启动都会有的,ToLua接口绑定需要一定的时间,我们在确保前期不会使用Lua的情况下采用多线程的方式进行绑定和加载,保证主线程不会卡住。

3)注意设置Web请求的超时时长。我们在游戏启动的时候做了一些hook的事情,会有Web请求,后来我们遇到一个情况是在很多机器上会黑屏等待30s甚至60s这样的时长,后来发现是因为这个Web请求没有设置超时时间,于是使用了机器默认的超时时间,在不同设备上不同,比如红米2A上会有接近1分钟的超时限制。这个很坑,只是因为那个非必须的Web服务没有正确开启,导致排查了很长时间。
Native层增加界面,减少黑屏等待,提升玩家体验。这个并不能真正解决问题,只是一种缓解手段,等到优化做到位了,其实也就不需要了。

说的内容大都是启动时间而非冷启动,供题主参考。建议题主多看看Unity进程的输出log,可能会有意外发现,通常情况下,不使用Resources的方式的话,在没Bug的情况下冷启动时间应该不会很长,我们因为没怎么用这种方式,所以不是很清楚。这个链接可以参考下:https://www.jianshu.com/p/4366da6dd4a1

推荐阅读更多精彩内容