Version: 2023.1
언어: 한국어
UnitySubsystemsManifest.json
XR SDK 입력 하위 시스템

하위 시스템의 런타임 발견 및 활성화

idDisplay0인 디스플레이 하위 시스템을 스캔, 생성 또는 시작하려면 프로젝트에 다음 스크립트를 추가하십시오. 다른 디스플레이 하위 시스템을 로드하려는 경우 match 변수를 변경할 수 있습니다.

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 패키지는 런타임 시 보조 시스템의 로딩을 설정하는 데 사용되는 사용자에게 표시되는 UI입니다.위에서 설명한 것과 동일한 기본 API를 사용하여 보조 시스템을 생성하고 관리합니다.공급자가 XR 설정 UI에 표시되도록 하려면 XRLoader를 작성하십시오.

플러그인이 로드되지 않으면 아래의 문제 해결 섹션을 참조하십시오.

런타임 시점에 문제 해결 플러그인 발견

하위 시스템 공급자의 초기화 또는 시작 문제를 해결하려면 에디터 로그 또는 플레이어 출력 로그에서 [XR] 또는 [Subsystems]로 시작하는 줄을 확인하십시오.

C#에 하위 시스템이 없음

.json과 플러그인 파일을 추가만 하려면 Unity를 다시 실행해야 합니다. 현재 Unity는 이러한 파일을 시작할 때 검색합니다. 또한 공급자가 올바른 파일 레이아웃을 사용하도록 해야 합니다.

UnitySubsystemsManifest.json 파일 찾기 및 파싱 오류

오류 설명
[XR] Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json에서 3개의 ‘displays’ 기술자(descriptor)가 일치함 Unity는 디스플레이 기술자를 찾고, 이 플러그인에 대한 세 가지 다른 id를 등록합니다.
[XR] Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json의 입력과 일치하는 기술자가 없음 .json 파일에는 입력 기술자(descriptor)가 포함되어 있지 않습니다. 이는 하위 입력 시스템을 실행하지 않는 경우 정상입니다.
Unity가 .json 파일에서 기술자를 찾으리라 예상했다면 기술자 형식이 잘못되었을 수 있습니다. 사용하려는 올바른 포맷은 UnitySubsystemsManifest.json의 문서를 참조하십시오.
[XR] Assets/UnityXRDisplayExample/UnitySubsystemsManifest.json에 대한 json 헤더를 파싱하지 못함(name 또는 libraryName 필드를 포함하는 것을 잊으셨습니까?) .json 파일의 형식이 잘못되었을 수 있습니다. json linter 같은 확인 툴에서 실행해 보십시오.

공급자 플러그인 찾기 및 로드 오류

오류 설명
[XR] PluginName이 DisplayId에 대한 공급자를 등록하지 못함(json 이름 또는 ID가 일치하지 않습니까?) 이는RegisterLifecycleProvider에 대한 처음 두 인수가 .json 파일과 일치하지 않음을 의미합니다.
첫 번째 인수 pluginName은 .json 파일의 name 필드와 일치해야 합니다.
두 번째 인수 id는 .json 파일에서 하위 시스템의 id 필드와 일치해야 합니다.
[XR] DisplayId 하위 시스템에 대한 PluginName 플러그인을 로드할 수 없음 플러그인을 찾을 수 없거나, 잘못된 아키텍처용으로 빌드되었거나, 로드해야 하는 종속성이 누락되었습니다. 후자의 경우 Dependency Walker 툴을 사용하여 누락된 종속성이 있는지 확인할 수 있습니다.

공급자 초기화 오류

오류 설명
[XR] DisplayId 하위 시스템을 초기화하지 못함 [error: 1] Unity가 Initialize 메서드를 호출했지만, kUnitySubsystemErrorCodeFailure를 반환했습니다. Initialize 메서드의 구현을 다시 확인하십시오.
UnitySubsystemsManifest.json
XR SDK 입력 하위 시스템