Unity 씬에서 Unity XR 오브젝트 자동 전환 기능
Unity의 XR 컴포넌트(AR Foundation 포함)는 제한된 기기만 지원합니다. 지원 기기에서는 AR Foundation을 사용하고, 다른 다양한 기기에서는 AR 기능을 사용하기 위해 EasyAR는 Unity XR 오브젝트 자동 전환 기능을 제공합니다. 다음 내용은 이 기능이 씬 오브젝트에 적용하는 변경 사항과 사용 방법을 설명합니다.
시작하기 전에
- EasyAR의 Unity XR 프레임워크 지원을 읽어 EasyAR의 Unity XR 프레임워크 지원 현황과 AR Foundation 사용을 고려해야 하는 상황을 파악하세요.
- 씬이 EasyAR 프로젝트의 AR Foundation 씬 설정 및 사용법에 설명된 대로 AR Foundation의 ARSession 및 XROrigin을 추가했는지 확인하세요.
기능 소개
Unity의 AR Foundation은 모바일에서 내부적으로 ARCore와 ARKit을 사용하므로, 제한된 기기에서만 작동하며 특히 많은 국내 Android 휴대폰에서는 사용할 수 없습니다. 따라서 일반적으로 지원 기기에서만 AR Foundation 및 관련 기능 스크립트를 활성화하는 것이 좋습니다. Unity XR 오브젝트 자동 전환 기능은 이 작업을 구현하며, 주로 모바일 AR을 위해 설계되었으며, 헤드셋에서는 기본 구성에서 기능이 비활성화됩니다.
전체 기능이 활성화된 경우,
- 에디터에서 easyar.ARSession는 UnityEngine.XR.ARFoundation.ARSession를 비활성화합니다.
- 런타임에서 easyar.ARSession는 Awake() 시점에 모든 Unity XR Core 컴포넌트 및 AR Foundation 컴포넌트를 비활성화합니다.
- 런타임에서 선택된 FrameSource가 ARFoundationFrameSource를 상속하거나 XROrigin 원점을 구현한 ExternalDeviceFrameSource인 경우, 비활성화된 Unity XR Core 컴포넌트 및 AR Foundation 컴포넌트는 easyar.ARSession.StartSession() 시점에 활성화됩니다(EasyAR에 의해 비활성화되지 않은 것은 활성화되지 않음). 다른 FrameSource가 선택된 경우, easyar.ARSession.StartSession() 시점에 모든 Unity XR Core 컴포넌트 및 AR Foundation 컴포넌트를 비활성화합니다.
- 런타임에서 모든 Unity XR Core 컴포넌트 및 AR Foundation 컴포넌트는 easyar.ARSession.StopSession(bool) 시점에 비활성화됩니다.
기본 구성에서 기능 활성화 조건은 다음과 같습니다.
- Windows/Mac에서 활성화됩니다.
- 전환기 시작 시 모바일 AR(ARKit/ARCore) 로더가 활성 상태이면 활성화됩니다.
- 전환기 시작 시 모바일 AR(ARKit/ARCore) 이외의 다른 로더가 존재하지만 활성 상태인 로더가 없으면 비활성화됩니다.
참고
XR Interaction Toolkit 컴포넌트는 이 기능의 제어를 받지 않지만, EasyAR에서 사용 가능한지는 검증되지 않았습니다. 이론적으로 Unity.XR.CoreUtils.XROrigin GameObject 및 해당 Camera만 사용하는 기능은 정상 작동할 수 있습니다. 동작이 이상할 경우 ARSession.ARCenterMode를 ARSession.ARCenterMode.SessionOrigin로 설정해 보세요. 그래도 기능이 정상적이지 않다면, 사용자 정의 XR Interaction Toolkit 컴포넌트 제어를 구현하여 FrameSource가 ARFoundationFrameSource를 상속하지 않을 때 관련 컴포넌트를 비활성화해야 합니다.
구성 방법
이 기능은 Project Settings > EasyAR > Sense의 Unity XR > Unity XR Auto Switch 옵션에서 활성화하거나 비활성화할 수 있습니다.

그림의 옵션은 다음과 같은 기능 동작을 구성합니다.
- Editor: 에디터 모드 옵션
- Disable AR Session: easyar.ARSession가 존재할 때 에디팅 중 UnityEngine.XR.ARFoundation.ARSession를 비활성화합니다.
- Player: 런타임 모드 옵션
- Enable: 런타임 제어를 활성화합니다. 참고: 이 옵션을 끄면 에디터 모드에서 비활성화된 컴포넌트는 런타임에 복원되지 않습니다.
- Enable If Desktop: Windows/Mac에서 활성화합니다.
- Enable If Mobile AR On Startup: 전환기 시작 시 모바일 AR(ARKit/ARCore) 로더가 활성 상태이면 활성화합니다. 일반적으로 이 옵션은
Project Settings>XR Plug-in Management의Initialize XR on Startup이 선택되어 있어야 합니다. - Disable If Non Mobile AR Post Startup: 전환기 시작 시 모바일 AR(ARKit/ARCore) 이외의 다른 로더가 존재하지만 활성 상태인 로더가 없으면 비활성화합니다. 일반적으로 이 옵션은
Project Settings>XR Plug-in Management의Initialize XR on Startup이 선택되지 않은 경우에 사용됩니다. - Restore AR Session When Disabled: 기능이 비활성화되었을 때 비활성화된 모든 UnityEngine.XR.ARFoundation.ARSession를 복원(활성화)합니다(EasyAR에 의해 비활성화되었는지 여부와 상관없음). 이 옵션은 일반적으로 에디팅 중 비활성화된 컴포넌트를 복원하는 데 사용됩니다.
사용자 정의 제어 방법 사용
이러한 컴포넌트 전환을 사용자 정의하거나 EasyAR의 동작이 특정 컴포넌트의 정상 작동을 방해하는 경우, 다음 기본 규칙에 따라 사용자 정의 컴포넌트 전환을 구현하면서 위 옵션들을 끄도록 해야 합니다.
- 에디터에서 UnityEngine.XR.ARFoundation.ARSession를 비활성화합니다(모든 다른 스크립트보다 실행 순서가 빠릅니다).
- AR Foundation이 작동하기 전에 모든 Unity XR Core 컴포넌트, AR Foundation 컴포넌트 및 제어해야 할 관련 컴포넌트나 기능을 비활성화합니다.
- easyar.ARSession.Assemble() 과정에서 ARCoreARFoundationFrameSource 또는 ARKitARFoundationFrameSource가 선택된 경우, 이전에 비활성화한 모든 컴포넌트나 기능을 활성화합니다. 이 작업은 StartSession() 완료 전에 이루어져야 하며, 일반적으로 easyar.ARSession.AssembleUpdate 이벤트 응답에서 완료하는 것이 좋습니다.
- easyar.ARSession.Assemble() 과정에서 다른 FrameSource를 선택하여 사용하는 경우 변경하지 않습니다.