- [Android] Unity와 Android 연동하기 | UnityPlayerActivity as subView2023년 03월 20일 00시 17분 35초에 업로드 된 글입니다.작성자: 핀수728x90반응형
1. Unity Hub 다운받기
해당 링크에서 다운 받는다.
퍼스널 라이센스를 활성화 시켰다.
그냥 무료버전은 없는건가…?
new project를 눌러보자
프로젝트가 생성되었다.
곧 각 항목에 대해 자세히 알아보도록 하자.
2. 프로젝트에 안드로이드 추가하기
맥OS 기준) file > Build Settings
플랫폼 선택에서 안드로이드가 빠져있었다. → 다운받지 않았기 때문 → 다운 받아주었다.
다운 받은 후 안드로이드를 선택하고 build switch를 눌러주면
위와 같이 유니티 로고가 안드로이드 쪽으로 이동한다.
(프로젝트 한번 껐다 켜니까 제대로 적용이 되었다.)
3. 관련 설정
export 하기 전에
Version : 1.0
Scripting Backend : IL2CPP
Target Architectures : ARM64
로 설정을 바꿔주어야 한다는데 OS가 달라서인지 해당 항목을 찾을 수 없었다.
export를 선택하면 저장될 위치를 정하라고 한다.
지정해주면 된다.
4. export된 파일을 안드로이드 프로젝트로 복사하기
export가 끝나면 unityLibrary가 생성되는데
이걸 복사해서 안드로이드 프로젝트에 넣어주면 된다.
5. 안드로이드 프로젝트 설정
안드로이드
local.properties
ndk.dir=/Applications/Unity/Hub/Editor/2021.3.21f1/PlaybackEngines/AndroidPlayer/NDK
맥OS 기준 유니티 설치 경로는 다음과 같다.
setting.gradle
rootProject.name = "AndroidUnitySample" include ':app', ':unityLibrary'
build.gradle(:app)
dependencies { ... // unity implementation project(':unityLibrary') implementation fileTree(dir: project(':unityLibrary').getProjectDir().toString() + ('\\libs'), include: ['*.jar']) }
gradle.properties
org.gradle.parallel=true unityStreamingAssets=.unity3d, .imgdb, HiddenARCore/39416e00-8920-4b03-8c8a-56e7d065fca.imgdb-imglist.txt
strings.xml
<resources> ... <string name="game_view_content_description">Game view</string> </resources>
Unity
build.gradle 에서 sdk 버전을 맞춰준다.
6. Manifest.xml
이번 샘플 프로젝트에서는 버튼을 클릭하면 유니티 프로젝트가 실행되어야 하므로
유니티 프로젝트의 Manifest.xml의 UnityPlayerActivity에서 intent-filter를 제거해주어야 한다.
+UnityPlayerActivity as subView
그냥 UnityPlayerActivity를 실행하면 하단 네비게이션 버튼도 가린 전체 화면이 된다.
그래서 해당 액티비티의 크기를 조절하면 괜찮을까? 해서 시도했는데
여전히 버튼은 가려진다..그래서 버튼을 달아서 화면에서 벗어날 수 있도록 처리를 해보려고 했는데
그냥 finish()를 호출하면 앱이 죽어버린다.
이 문제에 대해서는 좀 더 알아볼 필요가 있어보인다.
일단 UnityPlayerActivity를 subView로 활용하는 코드는 아래와 같다.
(relativeLayout의 크기는 xml에서 지정해놓은 상태이다.)
class CustomUnityActivity : UnityPlayerActivity() { @SuppressLint("MissingInflatedId") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) mUnityPlayer = UnityPlayer(this) val glesMode = mUnityPlayer.settings.getInt("glesMode", 1) mUnityPlayer.init(glesMode, false) setContentView(R.layout.activity_custom_unity) val relativeLayout = findViewById<RelativeLayout>(R.id.custom_unity_layout) relativeLayout.addView(mUnityPlayer.view) } }
공부하며 작성된 글이라 잘못된 정보가 있을 수 있습니다.
말씀해주시면 수정하겠습니다. 감사합니다.
References
아래 글을 참고하여 작성 되었습니다.
728x90반응형'Android > Android' 카테고리의 다른 글
[Android] BLE 통신 구현하기 (2) 2023.05.29 [Android] Unity 연동된 Android 프로젝트에서 Unity만 종료하기 (2) 2023.03.21 내 프로젝트와 Firebase 연동하기 (0) 2023.03.06 [Android] Hilt 적용해보기 (0) 2023.01.04 [Android] 부팅 시 앱 실행하기 | Android 10+ Application startup on BOOT (7) 2022.09.21 다음글이 없습니다.이전글이 없습니다.댓글