【问题标题】:Unity: Application keeps running in background although Application.runInBackground is falseUnity:尽管 Application.runInBackground 为 false,但应用程序仍在后台运行
【发布时间】:2021-01-28 15:42:02
【问题描述】:

我目前正在开发一些 Unity 项目(这是我的第一个项目,我对 Unity 不熟悉),令我困扰的是,尽管我有 Application.runInBackground == false,但当我最小化 Unity 编辑器窗口时,仍然会出现断点,所以应用程序应该在后台暂停,但事实并非如此!在实际代码继续执行时,只有 UI 被冻结并且音乐停止。所以,我基本上想知道这是一般行为还是仅当您在编辑器中运行以允许调试并且在发布版本中代码执行停止时才会发生?

【问题讨论】:

  • 欢迎新用户 - 我不确定 确切地说你的意思是什么,但是是的,不幸的是那种事情 不能像你想的那样工作期望在编辑器中。试试桌面版本?
  • Only the UI gets frozen and music stops .. 你的意思是你正在从不同的线程/异步任务中打断点吗?你无法避免他们继续奔跑! runInBsakground 只影响 Unity“主”线程。
  • @derHugo 断点在 Update() 中设置,从 MonoBehaviour 继承的断点在应用程序最小化时仍然命中,我很确定 Update() 在“主”上被调用线程
  • 所以只是为了确保您最小化并实际单击桌面上的其他程序?
  • @derHugo 我点击了 Visual Studio,我想是最小化应用程序还是点击另一个应用程序并不重要,因为在这两种情况下统一编辑器都会失去焦点。所以,我基本上是启动应用程序然后切换到 VS(当我切换到 VS UI 时会冻结并且音乐停止)然后我在 Update() 中设置断点并且它是 htis

标签: unity3d unity-editor


【解决方案1】:

我也有类似的问题。我发现这是因为我有一个连接到 Unity 的 IDE,然后才发生这种情况。当您切换到发布模式时,一切都会按预期进行 - debug mode in Unity

【讨论】:

    【解决方案2】:

    您是否尝试在编辑器中更改它?转到编辑-> 项目设置-> 播放器。检查器窗格现在将更改以显示播放器设置。查找显示“在后台运行”的选项并取消选中它。据我了解Application.runInBackground == false 更多的是暂停它而不是停止脚本运行。如果您的项目是针对移动设备的(或者可能只是添加它,它可能会有所帮助),请尝试:

    Android 和 IOS 忽略 RuninBackgorund 如何查看 here

    在 Android 后台运行的唯一有效方式是通过服务。您可以使用 OnApplicationPause 方法在游戏暂停/取消暂停时获得通知。

    public void OnApplicationPause(bool paused) {
    if(paused) {
    // Game is paused, stop service notifications.
    } else {
    // Game is unpaused, start service to get notifications
    }
    

    Here你有一个很好的关于android和unity之间通信的教程

    【讨论】:

      猜你喜欢
      • 2014-12-04
      • 2017-01-04
      • 1970-01-01
      • 2011-04-02
      • 2021-05-17
      • 2021-04-20
      • 1970-01-01
      • 2022-11-23
      • 2012-01-28
      相关资源
      最近更新 更多