방명록
- [Android] Unity 연동된 Android 프로젝트에서 Unity만 종료하기2023년 03월 21일 00시 00분 39초에 업로드 된 글입니다.작성자: 핀수728x90반응형
안드로이드에 있는 유니티 프로젝트만을 종료하고 싶을 때
유니티 쪽에서 Application.Quit() 를 호출하면 유니티 프로세스만 종료할 수 있다고 해서 해봤는데
앱이 죽어버린다. (그러나 죽기 전의 액티비티부터 재실행 되는 걸로 보인다.)
이것의 해답은 AndroidManifest.xml에서 해당 액티비티에 process 속성을 부여하는 것이다.
<activity android:name=".CustomUnityActivity" android:exported="false" android:process=":unity" />
그런데 두가지 문제가 있다.
- Unity에서 Application.Quit()가 실행되지 않는다는 것
- 그래서 일단 mUnityPlayer.quit() 를 실행했다.
- Android에서 Unity 메서드 호출하는 법 (Unity script에 해당 오브젝트와 메소드가 있어야겠죠)
UnityPlayer.UnitySendMessage("Unity Object", "Object Method", "your message")
2. 화면이 destroy 될 때 꼭 꺼졌다가 재실행되는 것 처럼 보인다는 것
근데 쓰다가 해결함
- 유니티 액티비티는 relativeLayout에 addView 된 것이었다.
- 그래서 해당 레이아웃에 모든 뷰를 삭제하는 메서드를 호출 relativeLayout.removeAllViews()
- 그다음 finish() 호출
- onDestroy() 를 재정의
override fun onDestroy() { mUnityPlayer.removeAllViews() mUnityPlayer.quit() super.onDestroy() }
AndroidManifest process
Log.d(TAG, "CustomUnityActivity: ${android.os.Process.myPid()}")
각 화면에서 동작하는 프로세스 id를 확인해보자.
Unity를 실행하는 액티비티의 프로세스 아이디만 다른 것을 알 수 있다.
해당 액티비티가 종료되고 나면, 해당 프로세스도 같이 종료될까?
실행중인 프로세스를 출력해주는 adb shell ps -ef 명령어를 실행해봤다.
CustomUnityActivity finish 후
프로세스가 종료되었다.
그러나
Unity와 Android 간의 데이터 주고 받기가 제대로 이루어지지 않았다…………………..
Unity를 더 공부해야겠다.
공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다.
말씀해주시면 수정하겠습니다. 감사합니다.
References
아래 글을 참고하여 작성 되었습니다.
728x90반응형'Android > Android' 카테고리의 다른 글
[Android] DataBinding 적용하기 - 01 (0) 2023.09.25 [Android] BLE 통신 구현하기 (2) 2023.05.29 [Android] Unity와 Android 연동하기 | UnityPlayerActivity as subView (2) 2023.03.20 내 프로젝트와 Firebase 연동하기 (0) 2023.03.06 [Android] Hilt 적용해보기 (0) 2023.01.04 다음글이 없습니다.이전글이 없습니다.댓글 - Unity에서 Application.Quit()가 실행되지 않는다는 것