我想在游戏暂停时使用TrailRenderer,但是由于timeScale为0,因此结果deltaTime为0。这导致TrailRenderer不起作用(尾巴永不消亡)。
我找不到任何参数可以手动设置更新时间或调用TrailRenderer的更新。
就像在Animator中一样,我们可以选择在“ UnscaledDeltaTime”中对其进行更新,我该如何为TrailRenderer进行更新?
答案 0 :(得分:1)
经过一些研究,看来您无法做到这一点。您可以在这里做一些事情,但是没有什么比在渲染器上设置时间标尺那么简单。
也许考虑一下您如何暂停游戏,看看timeScale是否真的是您的最佳解决方案。
这里也有这个问题How to make TrailRenderer work when timeScale is 0 in Unity?。
这似乎表明它无法完成。
答案 1 :(得分:1)
您可以使用Time.unscaledDeltaTime
的值。
有一个post on the Unity forums描述了与Time.unscaledTime
和Time.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;
}