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 기능을 활용하여 다양한 애플리케이션을 개발할 수 있습니다.