2017-11-28 1 views
1

화합의 응용 프로그램을 개발했습니다. 앱이 포 그라운드와 배경에있을 때 어떤 작업을 수행하고 싶습니다. 지금은 재귀 적 방식으로 여러 시간 간격으로 로그를 인쇄하려고합니다. 이 방법을 사용하여 카운트 다운 타이머를 호출합니다.Unity 앱이 백그라운드에서 작동하지 않습니다.

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로 작성해야합니다.

Java에서 C#이 아닌 실행 코드를 작성한 다음 Android의 Intent을 사용하여 서비스를 시작하십시오. 이 경우 서비스를 시작하려면 현재 Unity의 Context 또는 Activity을 플러그인에 보내야합니다. 이를 수행하는 방법에 대한 예제는 herehere입니다.

+0

그래, 지금이 솔루션을 시도하고있다. –

관련 문제