1 回答
TA贡献1772条经验 获得超6个赞
我正在使用Unity并停止时间,Time.timeScale = 0f;因此不能 Time.deltaTime在while循环中使用'Time.realtimeSinceStartup'。
您无需为此使用Time.realtimeSinceStartup。的确,设置Time.timeScale为0会使 每帧Time.deltaTime返回0。
这就是为什么Time.unscaledDeltaTime在Unity 4.5中添加此地址来解决该问题的原因。只需更换Time.deltaTime用Time.unscaledDeltaTime。您可以使用事件使用if (Time.timeScale == 0)来自动决定使用Time.unscaledDeltaTime还是Time.deltaTime。
IEnumerator changeValueOverTime(float fromVal, float toVal, float duration)
{
float counter = 0f;
while (counter < duration)
{
if (Time.timeScale == 0)
counter += Time.unscaledDeltaTime;
else
counter += Time.deltaTime;
float val = Mathf.Lerp(fromVal, toVal, counter / duration);
Debug.Log("Val: " + val);
yield return null;
}
}
用法:
StartCoroutine(changeValueOverTime(5, 1, 3));
值在几秒钟内从5变为。设置为还是都没有关系。13Time.timeScale10
- 1 回答
- 0 关注
- 285 浏览
添加回答
举报