update函数的deltaTime突然变大是什么原因?

update的deltaTime为什么从0.016xxx,突然变成了0.5xxx?导致我运算瞬间变大了,然后图片瞬间位移了
1{6UD$LIL0TW_RY}E}M@Y
然后接下来就正常了
S55R2)_N}YU5S}0XJHSKZFX

还有为什么我父组件active=false了,子组件还有一个显示的?
image
这个没隐藏
image
image

它表示两个连续帧之间的时间间隔,并不是稳定一个值的,下一帧要渲染的图形复杂了,就会变大

那我怎么保证我背景匀速移动?

试试缓动系统吧

缓动系统能做到这样吗?超出屏幕重新设置位置
image

可以的,.call里面重置就行

用dt就是为了保证速度正确,你想要的如果是不瞬移那就不要用dt,按帧计算

怎么按帧计算?

我猜您可能是想这样?
const speed = GameManager.gameSpeed * 1.0 / 60;
const moveX = x - speed;

少在update里面写代码吗?为什么我看别人又说能在update里写就不要写定时器,也不是说毕业生代码这样,网上的教程都是在update里面实现背景滚动的。优化代码?但是我看不出来我代码有啥卡帧的,能帮忙看看吗?https://gitee.com/friend-z/bird-tunnel.git
然后突然变成0.5s不是断点问题,打包线上也是会卡这0.5,新人找不出问题了

你要说清楚你的问题啊,这个相当于要看你这整个项目代码,除非有人很闲,不然不会看的

掉帧了吧。

直接注释了看看
:grinning:

你都没看我上面的问题。。

1 我log了你的deltaTime,没发现什么问题。如果你想匀速运动,就不要乘deltaTime,deltaTime本身就是变化的,你可以把deltaTime改成固定值,1/60,我猜你的GameSpeed也是通过deltaTime来调过的
image

2 至于你说的为啥没隐藏,你gameOver绑定错了节点
image

1赞

解决了谢谢你

缓动一样的

不用客气的