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

Unity中ARCore:无需触屏实现每帧执行函数的问题

解决Update函数仅在触屏时执行的问题

我来帮你排查下这个Unity项目里的问题——明明把代码放进了Update函数,却只有触屏时才执行,没法每帧自动跑。先从几个常见原因入手分析:

可能的原因及对应解决方案

1. 脚本或所在对象被禁用

  • 先检查挂载脚本的GameObject:看看Inspector面板里对象的激活勾选框是不是被取消了,要是没勾上,赶紧把它打勾激活。
  • 再确认脚本组件本身:有时候不小心点到脚本的勾选框,也会导致Update完全不触发,确保脚本是启用状态。

2. 移动端的休眠/省电限制

  • 安卓设备常会在无交互时降低CPU频率甚至让应用休眠,你可以去Player Settings > Android > Other Settings里勾选Keep Screen On,强制保持屏幕常亮,避免系统休眠导致Update停更。
  • 也可以检查项目的帧率设置:在Edit > Project Settings > Quality里,确认VSync和帧率限制没设成极低值,或者没开启仅交互时运行的模式。

3. 代码里误加了触屏判断

  • 会不会你在Update里不小心把核心代码裹进了触屏判断里?比如类似if (Input.touchCount > 0)这样的条件,导致只有触屏时才执行你的代码?如果是这样,把那层判断删掉就行。
  • 你给出的代码片段要确保直接放在Update里,没有被额外条件包裹:
    void Update()
    {
        anchor.transform.position = Vector3.zero; 
        hotPoint.transform.position = Vector3.zero; 
        _androidPosVector3ZeroText.text = anchor.transform.position.ToString(); 
        _camPosText.text = FirstPersonCamera.transform.position.ToString(); // 补全你的代码
    }
    

4. 脚本继承类错误

  • 确认你的脚本是继承自MonoBehaviour,只有继承这个类的脚本,Unity才会自动每帧调用Update函数。比如:
    public class YourScriptName : MonoBehaviour
    {
        // 你的变量定义
        void Update()
        {
            // 每帧执行的代码
        }
    }
    

快速验证方法

你可以先在Update里加一句调试日志,看看是不是真的只有触屏时才输出:

void Update()
{
    Debug.Log("Update正在每帧运行!");
    // 你的原有代码
}

运行项目后看控制台,如果日志一直打印,那可能是UI文本没正确更新(比如文本组件没赋值);如果只有触屏时才打印,就对应上面的原因逐个排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:28:59