Unity XR SDK 하위 시스템의 런타임 발견 및 활성화
개요
이 문서에서는 Unity에서 XR 하위 시스템을 런타임에 발견하고 활성화하는 방법을 설명합니다. Unity의 XR SDK를 사용하여 VR 또는 AR 디스플레이를 관리하고 구성할 수 있습니다.
기본 스크립트
다음은 XR 디스플레이 하위 시스템을 스캔하고 활성화하기 위한 기본 스크립트입니다. 이 스크립트를 프로젝트의 적절한 위치에 추가하세요.
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Experimental.XR;
using UnityEngine.XR;
public class Display : MonoBehaviour
{
public string match = "Display0";
// Use this for initialization
void Start ()
{
List<XRDisplaySubsystemDescriptor> displays = new List<XRDisplaySubsystemDescriptor>();
SubsystemManager.GetSubsystemDescriptors(displays);
Debug.Log("Number of display providers found: " + displays.Count);
foreach (var d in displays)
{
Debug.Log("Scanning display id: " + d.id);
if (d.id.Contains(match))
{
Debug.Log("Creating display " + d.id);
XRDisplaySubsystem dispInst = d.Create();
if (dispInst != null)
{
Debug.Log("Starting display " + d.id);
dispInst.Start();
}
}
}
}
}
XR Management 패키지
XR Management 패키지는 런타임 시 보조 시스템의 로딩을 설정하는 용도로 사용되며, 사용자에게 표시되는 UI로 보조 시스템을 관리합니다. XRLoader를 작성하여 공급자가 XR 설정 UI에 표시되도록 해야 합니다.
문제 해결
하위 시스템 공급자의 초기화 또는 시작 문제 해결
- 로그 확인: 에디터 로그 또는 플레이어 출력 로그에서
[XR]
또는[Subsystems]
로 시작하는 줄을 확인하세요. - C# 하위 시스템 없음: .json 및 플러그인 파일을 추가한 후 Unity를 재시작해야 합니다.
- 파일 레이아웃 확인: 공급자가 올바른 파일 구조를 따르고 있는지 확인하세요.
JSON 파일 관련 오류
오류 코드 | 오류 설명 |
---|---|
[XR] 3개의 ‘displays’ 기술자(descriptor)가 일치함 | Unity가 디스플레이 기술자를 찾고, 이 플러그인에 대한 세 가지 다른 ID를 등록합니다. |
[XR] 입력 기술자가 없음 | .json 파일에 입력 기술자가 포함되어 있지 않습니다. 이는 하위 입력 시스템을 실행하지 않는 경우 정상입니다. |
[XR] JSON 헤더 파싱 오류 | JSON 파일의 형식이 잘못되었을 수 있습니다. 확인 툴에서 실행해 보세요. |
공급자 플러그인 찾기 및 로드 오류
오류 코드 | 오류 설명 |
---|---|
[XR] PluginName이 DisplayId에 대한 공급자를 등록하지 못함 | RegisterLifecycleProvider의 첫 두 인수가 .json 파일과 일치하지 않음을 의미합니다. |
[XR] DisplayId 하위 시스템에 대한 PluginName 플러그인을 로드할 수 없음 | 플러그인을 찾을 수 없거나 잘못된 아키텍처용으로 빌드되었을 수 있습니다. |
결론
Unity의 XR SDK를 통해 디스플레이 하위 시스템을 효율적으로 관리할 수 있습니다. 스크립트를 통해 시스템을 활성화하고, 문제 발생 시 로그를 확인하여 신속히 대처할 수 있습니다. Unity의 다양한 기능을 활용하여 AR/VR 경험을 더욱 향상시킬 수 있습니다.