当timeScale设置为0时,Trail Renderer无法正常工作

时间:2019-02-25 21:16:26

标签: c# unity3d

我想在游戏暂停时使用TrailRenderer,但是由于timeScale为0,因此结果deltaTime为0。这导致TrailRenderer不起作用(尾巴永不消亡)。

我找不到任何参数可以手动设置更新时间或调用TrailRenderer的更新。

就像在Animator中一样,我们可以选择在“ UnscaledDeltaTime”中对其进行更新,我该如何为TrailRenderer进行更新?

2 个答案:

答案 0 :(得分:1)

经过一些研究,看来您无法做到这一点。您可以在这里做一些事情,但是没有什么比在渲染器上设置时间标尺那么简单。

也许考虑一下您如何暂停游戏,看看timeScale是否真的是您的最佳解决方案。

这里也有这个问题How to make TrailRenderer work when timeScale is 0 in Unity?

这似乎表明它无法完成。

答案 1 :(得分:1)

您可以使用Time.unscaledDeltaTime的值。

有一个post on the Unity forums描述了与Time.unscaledTimeTime.realtimeSinceStartup类似的特点。 OP在帖子底部说明了他们正在使用什么:

float lastFrameRealtimeSinceStartup;
float unscaledTimeWhilePlaying;

void Update() {

   float dRealtime = Time.realtimeSinceStartup - lastFrameRealtimeSinceStartup;
   if (dRealtime > (1.0f / 20.0f)) {
       //Assume the high dTime is due to the game being paused or lost focus
       dRealtime = 1.0f / 20.0f; //Set it to a reasonable time (20 FPS)
    }
    unscaledTimeWhilePlaying += dRealtime;
    lastFrameRealtimeSinceStartup = Time.realtimeSinceStartup;

}