You need to enable JavaScript to run this app. Unity中Update函数仅单次触发 自制游戏血条更新异常求助
优惠活动
大模型
产品
解决方案
定价
更多

Unity中Update函数仅单次触发 自制游戏血条更新异常求助

问题排查与解决方案

1. Update仅输出一次1的问题

  • 90%以上概率是Unity控制台开启了**折叠相同日志(Collapse)**功能:控制台右上角的Collapse按钮如果处于激活状态,完全相同的日志内容会被合并为1条显示,仅右上角计数增加,你误以为只输出了一次,实际上Update每帧都在正常执行,关闭Collapse按钮即可看到所有的1输出。
  • 次要排查点:确认脚本所在的GameObject、脚本组件没有被勾选禁用,确认Time.timeScale没有被设置为0(即使timeScale为0,Update依然会每帧执行,仅FixedUpdate会暂停,所以这个概率极低)。

2. 无法将UpdateSan设为私有方法的问题

你犯了基础的语法错误:你把UpdateSan定义成了Update函数内部的局部函数,C#中局部函数的作用域仅限于外层函数内部,不允许添加private/public等访问修饰符,这就是Unity报错的原因。
正确的写法是将UpdateSan挪到类内部,和Update方法平级,作为类的成员方法,此时就可以正常加private修饰符了:

private void Update()
{
    Debug.Log("1");
    if (Input.GetKeyDown("e"))
    {
        Father -= d;
        UpdateSan();
        Debug.Log("2");
    }
}

// 移到Update外部,作为类成员方法
private void UpdateSan()
{
    FatherI.fillAmount = Father / Max;
    Debug.Log("3");
}

3. 按下e先输出3再输出2属于正常逻辑

你的代码执行顺序就是先调用UpdateSan(内部输出3),再执行Debug.Log("2"),这个输出顺序完全符合代码逻辑,不是BUG。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 04:27:00