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的,所以修改这个就行了。