今天优化项目的时候发现某个ui界面打开有些慢,但是dc并不高,只有13,感觉可能是动态加载的东西有点多导致的,于是测试了一下发现。。原来是图片资源的加载导致的。。
这是没有加载图片的情况:
然后是这个是加载了图片的情况:
于是就发现加载图片资源基本上花了1/3的时间去读文件,然后就蹦出了一个机(s)智(b)的想法,如果我每次加载资源的时候用dictionary把sprite存下来,然后如果遇到相同的话再去实例化一下岂不是可以省去load的时间?
结果。。
结果不仅没有省去load的时间,反而增加了一堆的实例化的时间。。。然后我就想,既然image引用的都是同一个精灵的同一张图片,那不去实例化是不是也可以呢?结果跟直接用sprite.GetSprite()方法没差距。。
所以。。最后的结论就是,用个协程或者开个线程去提前间隔实例化一些需要初始化的物体,就相当于对象池里面先放一些东西,用的时候只要setactive一下就好了,只要把峰值错开,就不会有明显的卡顿了。
如果有大神觉得这不对的话请不吝赐教~