跑酷游戏,帧率没问题,保持在60fps左右,但仍会不定时(大约几十秒左右)有0.2~1s卡顿,Android和iOS表现基本一样。怀疑是GC造成。因为是跑酷游戏,卡顿一下还是很明显的,人物有可能会因为卡顿死亡,所以影响还是很大的。
已经采用各种方法优化,如:cc.pool重用对象,尽量不创建对象,能复用的就复用(包括动画之类的),仍然出现相同情况。求教各位如何进行优化。
下面是贴几段update中可能造成垃圾的代码:
1.
if (food.x <= -20) {
cc.pool.putInPool(food);
this.mFoodArray.splice(i, 1);
}
Array.splice(i, 1)这句话可能重新创建数组,造成开销?
-
var x = randomMinMax(30, 80); var y = randomMinMax(30, 80); var bubbleSmall = Bubble.reCreate(false); // 使用cc.pool复用对象 bubbleSmall.attr({ x : food.x + x, y : food.y + y, scale : 0.2, color : food.isHigh ? this.colorBubble1 : this.colorBubble2 }); this.addChild(bubbleSmall); var time = randomMinMax(1, 4); var delta = randomMinMax(60, 120); bubbleSmall.runAction(cc.moveBy(time/10, cc.p(0, delta))); // 随机点,产生moveBy, cc.p等对象 bubbleSmall.fade();
会有moveBy等动画对象以及cc.p生成,因为不是固定点,是随机点,无法只创建一个对象并持有,请问如何进行优化?
这个问题已经研究很久了,至今仍然未解决,游戏还是出现间歇性卡顿。希望能给予指导
非常感谢!