Unity as a Library 통합 가이드
목차
소개
이 가이드는 Unity as a Library 기능을 사용하여 Unity 런타임 라이브러리를 iOS 네이티브 애플리케이션에 통합하는 방법을 설명합니다. 이 기능을 이용하면, 3D/2D 실시간 렌더링, AR 경험, 3D 모델 상호작용 및 2D 미니 게임 등 Unity의 다양한 기능을 네이티브 애플리케이션에 포함시킬 수 있습니다.
작동 방식
iOS용 Unity as a Library를 사용하려면, Unity에서 기존처럼 Xcode 프로젝트를 빌드해야 합니다. 모든 Unity iOS Xcode 프로젝트 구조는 두 가지 주요 타겟으로 나뉘는데, 하나는 UnityFramework이고, 다른 하나는 Unity-iPhone입니다.
| 타겟 | 설명 | 
|---|---|
| UnityFramework | 소스, 플러그인, 종속성 프레임워크를 포함하며 라이브러리 파트입니다. | 
| Unity-iPhone | 앱의 뷰 관련 오브젝트에 액세스하는 씬 런처 파트입니다. | 
UnityFramework 클래스
UnityFramework는 Objective-C 클래스의 인스턴스를 통해 Unity 런타임을 제어할 수 있는 기본 클래스입니다.
메서드 설명
다음은 UnityFramework 클래스에서 제공하는 주요 메서드들입니다.
| 메서드 | 설명 | 
|---|---|
(UnityFramework*)getInstance | 
UnityFramework의 인스턴스를 반환하는 메서드입니다. | 
(UnityAppController*)appController | 
앱의 루트 Unity 클래스를 반환합니다. | 
(void)setDataBundleId:(const char*)bundleId | 
Unity 런타임이 Data 폴더를 찾아야 하는 번들을 설정합니다. | 
(void)runUIApplicationMainWithArgc:(int)argc argv:(char*[])argv | 
메인 메서드에서 Unity를 실행합니다. | 
(void)runEmbeddedWithArgc:(int)argc argv:(char*[])argv appLaunchOpts:(NSDictionary*)appLaunchOpts | 
다른 뷰가 있을 때 Unity를 실행합니다. | 
(void)unloadApplication | 
Unity를 언로드하고 콜백을 수신합니다. | 
(void)registerFrameworkListener: | 
라이프사이클 이벤트의 콜백을 수신하는 리스너를 등록합니다. | 
(void)unregisterFrameworkListener: | 
리스너 오브젝트를 등록 해제합니다. | 
(void)showUnityWindow | 
Unity 뷰를 표시합니다. | 
(void)pause:(bool)pause | 
Unity를 일시정지합니다. | 
제한 사항
Unity as a Library는 런타임 라이프사이클을 완전히 제어하지 않으므로, 다음과 같은 제한 사항이 있습니다.
| 제한 사항 | 설명 | 
|---|---|
| 전체화면 렌더링만 지원 | 화면 일부 렌더링 지원x | 
| 두 개 이상의 Unity 런타임 인스턴스 로드 불가 | 하나의 인스턴스만 로드 가능 | 
| 타사 플러그인 조정 필요할 수 있음 | 네이티브 및 관리 플러그인 모두 | 
활용 및 응용 예제
- 이커머스 앱에 AR 기능 통합: Unity를 이용하여 제품의 3D 모델을 만들고, 이를 이커머스 앱에 통합하여 소비자가 가상으로 제품을 미리 볼 수 있게 합니다.
 - 모바일 게임 개발: 기존의 2D 게임을 Unity로 발전시켜, 성능 향상과 다양한 플랫폼에서의 배포를 가능하게 합니다.
 - 교육용 애플리케이션: Unity의 3D 그래픽스와 상호작용 기능을 활용하여 학습 경험을 향상시키기 위한 애플리케이션을 개발합니다.
 - VR 체험 애플리케이션: 사용자가 VR 기기를 통해 몰입감 있는 경험을 할 수 있도록 Unity로 만들어진 가상 환경을 네이티브 애플리케이션에 통합합니다.
 
이와 같은 예제를 통해 Unity as a Library 기능을 활용하여 다양한 애플리케이션을 개발할 수 있습니다.