在Creator游戏开发中,一般是这样创建对象:
for (let i = 0; i < 10; i++) {
let node = cc.instantiate(prefab);
...
}
上面代码本身没有问题,就是连续实例化10个对象。但在大量UI、动画同时出现时,却极有可能引起卡顿,因为实例化对象是个非常耗CPU的阻塞操作。
优化方法就是采用分帧执行,例如分成10帧来执行,即每一帧只实例化一个对象。使用JavaScript
的setInterval
函数实现如下:
let count = 10;
let timer = setInterval(() => {
if (count-- > 0) {
let node = cc.instantiate(prefab);
...
} else {
clearInterval(timer);
}
}, 0);
如果this
指针是个组件对象,也可以使用Creator
封装的schedule
系列函数来实现:
let count = 10;
this.schedule(() => {
let node = cc.instantiate(prefab);
...
}, 0, count-1, 0);