如何在后台运行Unity程序?

时间:2017-11-28 12:30:41

标签: c# android unity3d background

我开发了一个统一的android应用程序。我想在应用程序处于前台和后台时执行某些操作。现在我试图以递归方式在几个时间间隔内打印日志。我正在使用这种方法来调用我的倒数计时器。

void OnApplicationFocus(bool hasFocus){
        StartBattle();
        isPaused = !hasFocus;
        Debug.Log("isPaused " + isPaused);
    }

void OnApplicationPause(bool pauseStatus){
      isPaused = pauseStatus;
      StartBattle();
     }

这种方法以递归方式打印数据。

public void StartBattle(){
        StartCoroutine(BattleRecursive(0));
    }

public IEnumerator BattleRecursive(int depth){
        // Start Coroutine"

        yield return new WaitForSeconds(2f);

        if (depth == 0)
            yield return StartCoroutine(BattleRecursive(depth + 1));

        if (depth == 1)
            yield return StartCoroutine(BattleRecursive(depth + 1));

        Debug.Log("MyCoroutine is now finished at depth " + depth);
    }

当应用程序处于前台时,日志打印得非常好,但当应用程序处于后台时,它不会打印任何内容。

1 个答案:

答案 0 :(得分:2)

当Unity退出时,您无法在后台执行Unity C#代码。您希望在后台运行的代码必须使用Java格式。

使用Java编写您想要执行的代码而不是C#,然后使用Android Intent启动服务。这需要您将当前Unity的ContextActivity发送到您的插件才能启动该服务。您可以找到有关如何执行此操作的示例herehere