代码加载
Q1:我的项目在加载过程时经常崩溃,项目加载代码如下。想请问这种写法是否存在问题,是否会导致崩溃?
首先,崩溃还是要看具体崩溃log,看看到底是哪里崩溃,定位真正的崩溃原因(说不定看完后还不是加载的问题)。其次,来谈谈代码的问题,一共有三点需要研发团队考虑:
(1)代码中通过For循环开启一个Coroutine,通过WWW加载AB,然后保存www.bytes信息,这可能是准备后续通过LoadFromMemory来加载。这里如果www.bytes量持续增加,且没有很好地管理的话,那么很可能会造成大量内存占用,特别是堆内存;
(2)代码中www变量在使用后已经设为null了,但为什么下面还要在new一个对象来对其进行缓存呢?这个目前仅通过这段代码来看是很难理解的;
(3)代码中For循环每次仅开启一个Coroutine来加载AssetBundle,这个很可能会严重拖慢项目的加载速度,但这个问题只是效率问题,不会引起崩溃。
PS:在我们与研发团队的交流过程中,我们发现比起大一统的、有规律性的经验总结,更多开发问题都隐于代码背后,这不能仅靠语言描述或者经验推测可以解决,而需要我们深入现场,在代码中挖掘问题的原因。这也是我们UWA真正想帮助大家解决问题的方式。因而,我们强烈欢迎大家就自己的具体问题具体交流。请记得:比起闭门造车,我们更乐意与大家各抒己见,畅所欲言;比起形而上的泛泛而谈,我们更乐意与大家直击痛点,对症下药。