两帧之间的dt为何变化这么大

update: function (dt) {
if(dt>0.05) this.node.getChildByName(“tDT”).getComponent(cc.Label).string= dt;
}

程序如上,tDT是一个label, 目的是把两帧之间的dt打印出来,发现偶尔会跳到0.2甚至0.5, 即使程序本身并不做其它工作,情况也是如此.
我的游戏本身类似于微信小飞机,整个背景匀速前进. 由于这个0.2/0.5的卡顿,导致游戏时不时会卡一下.
版本是cocos creator 1.2.1-rc.1
有没朋友遇到同样的情况

1赞

在同样的系统下,用C++试了一下,无此问题. C++的程序同时还跑了很多应用.
补充一下,我的发布平台是Android, 模板default.

现在看来,应该是creator的性能有很大问题. 做类似项目的小伙伴们要小心了

2赞

这是 JSB 上特有的问题,个人怀疑是 SpiderMonkey 的 GC 不太完善导致的,@Panda 看看有没有办法优化下。

谢谢回复.测试程序啥也不干,就显示一个label.大概一两分钟会突然跳到0.2/0.5

creator 的版本是1.2, 今天也试了1.3.1 现象一致

是在做一个小项目时遇到这个问题.现在项目基本完工,就卡在这里过不去

谢谢了

gc 的开销 太大

@jare @panda 这个问题有没安排啊.如果团队太忙,能否指点一下大概方向,我们这边团队研究一下

同求解决方案。 游戏周期顿卡。

可以确认是GC的问题。
例如游戏30秒卡一次,但是假如在20秒时手动GC,则时间重置为30秒。

请教该如何手动gc

哦。。。 我这个是cocos2d-js,手动GC的意思是手动调用GC方法。。调用的cc.sys.garbageCollect();

而且调用的时候游戏还是会顿卡一下。 所以并不是解决办法。

谢谢。官方一直没有答复,郁闷

不禁联想到了unity帧控制器里提供了 FixedUpdate() 这样的生命周期回调,还可设置 FixedTimestep 大小和最大值:slightly_smiling:……

对JS引擎的GC不熟,意淫下一个土法,能否控制GC与帧率或DT值关联起来,设置一个帧率或DT阙值,GC前比较下当前值和阙值,如果高于阙值则暂不GC,先让位于逻辑处理和渲染呢:innocent:

背景匀速前进是不是可以用移动camera 的方式实现,开销的应该会小。

似乎并没有camera。目前。

据我的观察,一旦gc,就是零点几秒的开销。这必然会影响画面的刷新或者对用户的响应。这两种行为都是无法避开的

1.4版本似乎仍未解决此问题。不知官方是怎么考虑的

表示都没用过dt这是干嘛的呀

Delta Time的缩写,两帧之间的时间差。