最近一直忙于逻辑,就一段时间没管性能,然后放到红米上,突然一开始有严重卡顿。情况如下:
以前所有战斗初始化都是在Awake()里面执行,全部时间大概是1-2s,但由于是在awake中,从体验上会觉得是和loading一块,所以没有影响。但现在增加了一个剧情,一开始设计的时候很简单,就是说剧情模式下执行剧情脚本,然后进入战斗再挂上战斗脚本。然后问题来了,我希望做到剧情和战斗的无缝衔接,起码不要有明显的卡顿,不然剧情结束还要loading啥的太sb了。但现在的情况是,所有战斗脚本Awake有2s左右,基本就卡主了。性能分析器也显示主要是资源加载和第一次初始化太耗时间。我主要从三个方面入手处理。
1.将可以提前准备的资源依然放在Awake中。这个就是从逻辑上处理,本来要剧情结束才开始战斗,但其实一开始就可以准备全部的剧情资源和部分战斗资源,例如战斗场景,背景音乐等。这个需要重构,我也鼓励大家多重构,不要怕麻烦。因为这样才能进步。这一步做完,基本少了一点点卡顿,大概还是接近2s。
2.排队初始化。战斗单元是无法提前得知的,所以无法提前准备,然后我一开始是同时初始化10个战斗单位,现在改成每隔0.05秒初始化一个,也就0.5s初始化完毕。一开始觉得这样肯定大幅减少卡顿,