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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【unity】第一次启动项目冷启动优化相关的知识,希望对你有一定的参考价值。

参考技术A 首先肯定是判断游戏在冷启动过程中是在做什么事情消耗了时间,然后针对性地优化。还有就是定义好冷启动的界限,从点击游戏到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

解决冷启动电脑后第一次读取Sqlite数据库缓慢的问题

转载请说明原出处,谢谢~~:https://blog.csdn.net/zhuhongshu/article/details/80272363

最近项目中得到用户反馈,说每次重启电脑后,软件界面的数据加载都非常慢。这些数据都是软件启动后从Sqlite数据库读取的。我开始以为是代码有什么地方优化的不够好,出现了瓶颈,后来反复实验发现只有冷启动后第一次打开软件会出现这种情况,以后再次打开软件速度就很快了。后来咨询网友,又查了资料,发现居然真有这种现象:

冷启动后,系统和硬盘对文件的缓存被清除。第一次读取文件时直接从硬盘读取就会慢很多。而读取过一次后,以后再使用文件,因为被缓存过,所以速度就快很多了。

参考资料:

一个简单的解决方法就是:在软件启动后,对文件进行预热:通过某个方法,打开并读取一遍文件就可以。

我这里采用一个最简单的方法:打开数据库之前,复制一份数据库,然后再把副本删除。在复制的过程中就会读取整个文件,达到预热效果。做完之后,以后再重启电脑,第一次打开软件读取数据库也很快。

如果有其他见解或者更好的解决方法,请联系我

Redrain QQ:491646717 2018.5.10


以上是关于【unity】第一次启动项目冷启动优化的主要内容,如果未能解决你的问题,请参考以下文章

Android 项目优化:应用启动优化

Android性能优化系列之App启动优化

android冷启动优化

android冷启动优化

Android 冷启动优化

android 性能优化 -- 启动过程 冷启动 热启动