SMALL
유니티에서 재시작의 개념은 보통 처음 씬을 로드하여 초기화 단계를 거치도록 하는 방법을 사용한다.
그러나 이 과정에 초기화 작업이 요구되며, Don't Destroy 객체는 각 데이터에나 상태에 대한 초기화가 필요하다.
따라서 어플리케이션 차원의 재시작을 위해 아래의 코드를 실행하여 앱 자체를 재시작한다.
public void Restart()
{
using (AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer"))
{
const int kIntent_FLAG_ACTIVITY_CLEAR_TASK = 0x00008000;
const int kIntent_FLAG_ACTIVITY_NEW_TASK = 0x10000000;
var currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
var pm = currentActivity.Call<AndroidJavaObject>("getPackageManager");
var intent = pm.Call<AndroidJavaObject>("getLaunchIntentForPackage", Application.identifier);
intent.Call<AndroidJavaObject>("setFlags", kIntent_FLAG_ACTIVITY_NEW_TASK | kIntent_FLAG_ACTIVITY_CLEAR_TASK);
currentActivity.Call("startActivity", intent);
currentActivity.Call("finish");
var process = new AndroidJavaClass("android.os.Process");
int pid = process.CallStatic<int>("myPid");
process.CallStatic("killProcess", pid);
}
}
반응형
'게임 개발 공부 > Unity' 카테고리의 다른 글
IAP(In-App Purchasing) 5.0.0 업데이트 (0) | 2025.08.21 |
---|---|
채팅 구현 관련(연속 채팅) (0) | 2025.06.12 |
빌드 리포트 인스펙터(Build Report Inspector) (1) | 2024.09.07 |
LayerMask를 이용한 Layer 비교(feat.충돌 처리) (0) | 2024.05.09 |
Unity Script에서 HEX(Hexadecimal) 값으로 Color 변환하는 법 (1) | 2024.01.28 |