티스토리 뷰
반응형
[unity/android]유니티 안드로이드에서 백그라운드로 타이머 구현 방법
기본적으로 유니티에서는 안드로이드 환경에서 background 구현이 불가능하다. 불가능하진 않지만 Java라이브러리환경에서 android service를 활용해야하기때문에 너무나 번거로워서 조금 우회적인 방법을 사용하였다.
void Start()
{
InvokeRepeating("Test", 0.0f, 0.01f);
}
void Test()
{
cnt = cnt + 0.01f;
text.text = cnt.ToString("0.00");
}
기본 타이머 구현이다.
private void OnApplicationPause(bool pause)
{
if (!isFirst)
{
if (pause)
{
ToForegroundTime = DateTime.Now;
WriteLog("up: "+DataConverter.DateTimeToString(ToForegroundTime));
}
else
{
TobackgroundTime = DateTime.Now;
WriteLog("background: "+DataConverter.DateTimeToString(TobackgroundTime));
isUpdate = true;
}
}
else
{
isFirst = false;
WriteLog("first");
}
}
void Test()
{
if (isUpdate)
{
var sec = TobackgroundTime.Subtract(ToForegroundTime).TotalSeconds;
WriteLog("total sec: " + sec);
cnt += (float)sec;
text.text = cnt.ToString("0.00");
isUpdate = false;
}
else
{
cnt = cnt + 0.01f;
text.text = cnt.ToString("0.00");
}
}
OnApplicationPause 함수는 앱이 백그라운드로 전환 시 true 포그라운드로 전환 시 false를 반환하다.
다만 최초에 1회 false를 반환하기 때문에 최초 접속시에 체크를 해줘었다.
1. 백그라운드 진입 시 시간을 기록
2. 포그라운드 진입 시 시간을 기록
3. 그 차이를 구하여, 기존 타이머에 더해준다.
그렇게 우회적으로 백그라운드에서도 타이머가 진행가능하도록 처리하였다.
#timer #invoke #invokeRepeating #dispathertimer #c# #unity #background #foreground #java #타이머 #백그라운드 진입 #백그라운드에서 #타이머 #안드로이드 #android
반응형
'유니티(unity)' 카테고리의 다른 글
[unity/android] 유니티 개발 시 android에서 Debug.Log() 로그 출력하기 (0) | 2021.12.08 |
---|---|
[unity/nfc] NFC 리더 라이브러리 구현(이벤트 핸들러 방식) (0) | 2021.12.08 |
[unity/Webapi] WebHelper 활용 편 (0) | 2021.12.06 |
[unity/Webapi] Get/Post 요청하기 직접만든 Helper 함수 소스 제공 (0) | 2021.12.06 |
[unity/json]Newtonsoft Json 라이브러리 손쉽게 추가하는법(package manager 이용) (4) | 2021.12.06 |
댓글
반응형