You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Update的工作机制及调用次数相关疑问

Unity Update与FixedUpdate调用时机问题解答

场景与代码说明

我创建了一个仅包含挂载脚本对象的示例场景(无相机),脚本代码如下:

using UnityEngine;

public class UpdateTest : MonoBehaviour
{
    private void Update()
    {
        Debug.Log("Update");
    }
    
    private void FixedUpdate()
    {
        Debug.Log("FixedUpdate");
    }
}

运行约5秒后,在控制台观察到相应输出,现针对两个疑问解答:


问题1:Unity如何确定Update的调用时机?为何目标帧率设为60,Update却每秒调用约1000次?

  • Update的核心触发逻辑是每完成一次帧循环就调用一次,但完整帧循环包含输入处理、Update执行、渲染等环节。当场景中没有相机时,Unity会跳过渲染环节,此时帧循环的执行不再受渲染帧率限制,会以CPU能支撑的最大速度循环执行,Update也就会被高频调用,出现每秒上千次的情况。
  • 项目设置里的**目标帧率(Target Frame Rate)**是针对渲染帧率的限制,只有当场景存在相机进行渲染时,这个设置才会生效,通过控制渲染间隔来间接限制Update的调用频率。没有相机时,渲染环节缺失,该设置失去作用,Update就会全速执行。

问题2:Update的调用次数为何会多于FixedUpdate?

  • FixedUpdate的调用时机由固定时间步长决定(默认在Project Settings > Time中设置为0.02秒,即每秒约50次),它的调用间隔是固定的,不受游戏运行速度影响。
  • 你之前认知的“FixedUpdate可能在一次Update中被调用多次”,是游戏帧率低于FixedUpdate理论频率时的情况(比如帧率仅30,为了保证FixedUpdate的调用次数达标,会在一次Update前连续调用多次FixedUpdate)。而当前场景中,Update因无相机被全速调用,频率远高于FixedUpdate的固定频率,自然会出现多次Update对应一次FixedUpdate的情况,这同样符合Unity的执行逻辑,和你之前的认知并不冲突,只是不同场景下的两种表现。

内容的提问来源于stack exchange,提问作者Nikolai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:47:11