유니티 XR Plug-in Management #Initialize XR on Startup

VR개발을 하다 보면 에디터를 실행할 때 에어링크로 연결된 기기가 재생이 되지 않고 PC를 이용한 에디터 디버깅이 필요할 때가 종종 생깁니다.

Initialize XR on Startup

 

에어링크가 연결된 상태임에도 불구하고 PC로 에디터를 컨트롤 하기 위해서는 프로젝트 세팅에 있는 XR 플러그인 매니지먼트의 Initialize XR on Startup부분을 비활성화해주면 됩니다.

 

하지만, 매번 저 윈도우창에 들어가서 껐다 켰다 하기란 매우 불편한 과정입니다.


모습

토글

 

그래서 에디터 상단에 토글을 이용하여 저 부분을 껐다 켰다 할 수 있는 기능을 만들어 보았습니다.

큰 문제는 되지 않으나 윈도우 창에서 토글을 건드려도 에디터 상단 토글은 업데이트 되지 않습니다.

 

따라서, 에디터 상단 토글을 이용하시길 추천드립니다.

 


코드

using UnityEditor;
using UnityEngine;
using UnityEngine.XR.Management;
using UnityToolbarExtender;

[InitializeOnLoad]
public class InitializeXREditorToggle : EditorWindow
{
    private const string InitManagerPrefKey = "InitXRManagerOnStart";
    private static BuildTargetGroup selectedTargetGroup = BuildTargetGroup.Standalone;
    private static bool initManagerOnStart;

    static InitializeXREditorToggle()
    {
        initManagerOnStart = EditorPrefs.GetBool(InitManagerPrefKey, false);
        ToolbarExtender.RightToolbarGUI.Add(ShowToggle);
    }

    private static void ShowToggle()
    {
        bool newInitManagerOnStart = GUILayout.Toggle(initManagerOnStart, "Initialize XR[Standalone]"); // + selectedTargetGroup

        if (newInitManagerOnStart != initManagerOnStart)
        {
            initManagerOnStart = newInitManagerOnStart;
            EditorPrefs.SetBool(InitManagerPrefKey, initManagerOnStart);

            XRGeneralSettings generalSettings = XRGeneralSettings.Instance;
            if (generalSettings != null)
            {
                generalSettings.InitManagerOnStart = initManagerOnStart;
                EditorUtility.SetDirty(generalSettings);
                AssetDatabase.SaveAssets();
            }
        }
    }
}

 

에디터 폴더에서 작성하셔야 합니다.