【问题标题】:Time.deltaTime is 0? [duplicate]Time.deltaTime 为 0? [复制]
【发布时间】:2021-12-04 11:04:49
【问题描述】:
float moveSpeed = 1.5f;
float step = moveSpeed * Time.deltaTime;
StartingFlash.GetComponent<CanvasGroup>().alpha = Mathf.Lerp(StartingFlash.GetComponent<CanvasGroup>().alpha, 0f, step);

所以我遇到了 lerp 问题,上面的代码是我目前尝试 lerp 的方式,但它不起作用。打印 Time.deltaTime 时,由于某种原因,它等于 0,使第二个变量 step 为 0,这就是我认为 lerping 不起作用的原因。我在这里做错了吗?这根本就不是 lerp 的正确方法吗?我尝试了很多方法,但对我来说仍然很困惑,因此非常感谢任何帮助。

【问题讨论】:

  • 您从哪个 Unity 生命周期方法调用它?
  • 例如,如果您从FixedUpdate() 中调用Time.deltaTime,它实际上将返回Time.fixedDeltaTime(根据this)。如果碰巧将Time.timeScale 设置为0,那么这将始终返回0
  • @OmarAbdelBari 我从Start() 调用的协程调用Time.deltaTimeTime.timeScale 设置为 0,但您说它只会从 FixedUpdate() 返回 0 或者您分别说这两件事,您必须为我澄清一下,我是不调用它,如果在我的情况下 timeScale 为 0,它仍然保持在 0 吗?
  • 我举了一个例子,但是由于 Time.deltaTime 是 UI 帧之间的时间,我认为它不适用于 Start() 。不过我有点生疏了。在Update() 中尝试一下,看看第一帧之后会发生什么。
  • @OmarAbdelBari 似乎即使在 Update() 中它仍然等于 0@

标签: c# unity3d


【解决方案1】:

所以我想通了,我相信,我试着弄乱脚本看看会发生什么,所以我用Time.fixedDeltaTime 替换了所有Time.deltatime,显然这有效。

【讨论】:

  • 当出现帧率问题时,这会导致进度缓慢。 Time.unscaledDeltaTime 应改为使用 - 请参阅问题以获取链接。
  • @Ruzihm 我会尝试看看这是否也有效,或者更好。
猜你喜欢
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 2018-11-23
相关资源
最近更新 更多