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. 存疑。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-01-11 unity 导出ui初始化代码