CocosCreator中使用分帧创建对象

在Creator游戏开发中,常常是这样创建对象的:

for (let i = 0; i < 10; i++) {
	let node = cc.instantiate(prefab);
	this.addChild(node);
}

上面代码很简单,就是连续实例化了10个对象,代码本身没有问题。但在大量UI、动画同时出现时,却极有可能引起卡顿,因为实例化对象是个非常耗CPU的阻塞操作。

优化方法就是采用分帧执行,例如上面代码分成10个帧来执行,即每一帧只实例化一个对象。使用JavaScriptsetInterval函数实现如下:

let count = 10;
let timer = setInterval(() => {
	if (count-- > 0) {
		let node = cc.instantiate(prefab);
		this.addChild(node);
	} else {
		timer && clearInterval(timer);
		timer = null;
	} 
}, 0);

如果 this指针是个组件对象,也可以使用Creator封装的schedule系列函数来实现:

let count = 10;
this.schedule(() => {
	let node = cc.instantiate(prefab);
	this.addChild(node);
}, 0, count - 1, 0);

你可能感兴趣的:(Creator,CocosCreator)