cocos creator 2.1.0中可以通过cc.director.getScheduler().setTimeScale(value)来设置timeScale,但是这仅仅影响了回调函数的timeScale,并不作用于component的update,非常不方便,官方也迟迟不修改,现在想要像Unity一样修改一处timeScale,加快整体游戏的速度,那么只要运行下面这一段代码就可以啦。

let _deltaTime: number = 0;
let timeScaleAttibute = cc.js.getPropertyDescriptor(cc.director, "_deltaTime");
Object.defineProperty(cc.director, "_deltaTime", {
	get: () => {
		let r = let r = _deltaTime * cc.director.getScheduler().getTimeScale();
			return r; 
		},
		set: (value) => { 
			 _deltaTime = value;
		},
        enumerable: true,
        configurable: true
});

为什么这样改呢,查看Cocos Creator源码中的CCDirector.js,是通过拿this._deltaTIme来传递给component的update的,所以修改这个就行了。

[Cocos Creator] 修改Cocos Creator 中的timeScale
[Cocos Creator] 修改Cocos Creator 中的timeScale

相关文章: