2017-11-28 9 views
1

私はユニティアンドロイドアプリケーションを開発しました。アプリがフォアグラウンドでもバックグラウンドでも動作するようにしたい。今私は再帰的な方法でいくつかの時間間隔でログを印刷しようとしています。私はこのメソッドを使用して私のカウントダウンタイマーを呼び出しています。ユニティアプリケーションがバックグラウンドで動作していません

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

Unity終了時に、Unity C#コードをバックグラウンドで実行することはできません。バックグラウンドで実行するこのコードは、Javaで作成する必要があります。

実行するコードをC#ではなくJavaで記述し、AndroidのIntentを使用してサービスを開始します。これには、サービスを開始するために現在のUnityのContextまたはActivityをプラグインに送信する必要があります。あなたはそれを行う方法の例を見つけることができますherehere

+0

[OK]を今すぐこれらのソリューションを試しています。 –

関連する問題