unity WaitForFixedUpdate在当前物理帧的最后执行

WaitForFixedUpdate在当前物理帧的最后执行,而不是下一物理帧的最后或者之前:

https://docs.unity3d.com/Manual/ExecutionOrder.html

 

Time.frameCount是逻辑帧自增,和物理帧无关 

https://answers.unity.com/questions/933751/timeframecount-vs-timerenderedframecount.html

 

复制代码
 

// Update is called once per frame
void Update()
{
    Debug.LogError("Update  " + Time.frameCount);
}
private static int fixedCount = 0;
private void FixedUpdate()
{
    fixedCount = fixedCount + 1;
    Debug.LogError("0 FixedUpdate  " + Time.frameCount + " fixedCount:" + fixedCount + " Time:" +  DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
    Debug.LogError("1 FixedUpdate " + Time.frameCount + " fixedCount:" + fixedCount + " Time:" +  DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
    this.StartCoroutine(CountDown_WaitForFixedUpdate());
    Debug.LogError("2 FixedUpdate " + Time.frameCount + " fixedCount:" + fixedCount + " Time:" +  DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
}
IEnumerator CountDown_WaitForFixedUpdate()
{
    Debug.Log("1yield WaitForFixedUpdate - step  " + Time.frameCount + " fixedCount:" + fixedCount + " Time:" +  DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
    yield return new WaitForFixedUpdate();
    Debug.Log("2yield WaitForFixedUpdate - step   " + Time.frameCount + " fixedCount:" + fixedCount + " Time:" + DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss.fff"));
    //yield return new WaitForFixedUpdate();
    //         Debug.Log("3yield WaitForFixedUpdate - step  " + Time.frameCount);
}
复制代码

 

 下图红框内分别是 WaitForFixedUpdate 和 下一物理帧的FixedUpdate日志。

unity文档 https://docs.unity.cn/ScriptReference/WaitForFixedUpdate.html  里说"Waits until next fixed frame rate update function. "  和测试不一样。 精确到ms的时间一个是 892一个是920.  存疑。

 

posted @   sun_dust_shadow  阅读(738)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-01-11 unity 导出ui初始化代码
点击右上角即可分享
微信分享提示