public static void SetXRLoaderEnabled(string loaderClassName, BuildTargetGroup buildTargetGroup, bool enabled) { #if VIU_XR_GENERAL_SETTINGS MethodInfo method = Type.GetType("UnityEditor.XR.Management.XRSettingsManager, Unity.XR.Management.Editor") .GetProperty("currentSettings", BindingFlags.NonPublic | BindingFlags.Static).GetGetMethod(true); XRGeneralSettingsPerBuildTarget generalSettings = (XRGeneralSettingsPerBuildTarget)method.Invoke(null, new object[] {}); XRGeneralSettings xrSettings = generalSettings.SettingsForBuildTarget(buildTargetGroup); if (xrSettings == null) { xrSettings = ScriptableObject.CreateInstance <XRGeneralSettings>() as XRGeneralSettings; generalSettings.SetSettingsForBuildTarget(buildTargetGroup, xrSettings); xrSettings.name = $"{buildTargetGroup.ToString()} Settings"; AssetDatabase.AddObjectToAsset(xrSettings, AssetDatabase.GetAssetOrScenePath(generalSettings)); } var serializedSettingsObject = new SerializedObject(xrSettings); SerializedProperty loaderProp = serializedSettingsObject.FindProperty("m_LoaderManagerInstance"); if (loaderProp.objectReferenceValue == null) { var xrManagerSettings = ScriptableObject.CreateInstance <XRManagerSettings>() as XRManagerSettings; xrManagerSettings.name = $"{buildTargetGroup.ToString()} Providers"; AssetDatabase.AddObjectToAsset(xrManagerSettings, AssetDatabase.GetAssetOrScenePath(generalSettings)); loaderProp.objectReferenceValue = xrManagerSettings; serializedSettingsObject.ApplyModifiedProperties(); } if (enabled) { #if VIU_XR_PACKAGE_METADATA_STORE if (!UnityEditor.XR.Management.Metadata.XRPackageMetadataStore.AssignLoader(xrSettings.AssignedSettings, loaderClassName, buildTargetGroup)) { Debug.LogWarning("Failed to assign XR loader: " + loaderClassName); } #else if (!AssignLoader(xrSettings.AssignedSettings, loaderClassName)) { Debug.LogWarning("Failed to assign XR loader: " + loaderClassName); } #endif } else { #if VIU_XR_PACKAGE_METADATA_STORE if (!UnityEditor.XR.Management.Metadata.XRPackageMetadataStore.RemoveLoader(xrSettings.AssignedSettings, loaderClassName, buildTargetGroup)) { Debug.LogWarning("Failed to remove XR loader: " + loaderClassName); } #else if (!RemoveLoader(xrSettings.AssignedSettings, loaderClassName)) { Debug.LogWarning("Failed to remove XR loader: " + loaderClassName); } #endif } #endif }
public void UpdateGeneralSettings_ToPerBuildTargetSettings() { bool success = XRGeneralSettingsUpgrade.UpgradeSettingsToPerBuildTarget(testPathToSettings); Assert.IsTrue(success); XRGeneralSettingsPerBuildTarget pbtgs = null; pbtgs = AssetDatabase.LoadAssetAtPath(testPathToSettings, typeof(XRGeneralSettingsPerBuildTarget)) as XRGeneralSettingsPerBuildTarget; Assert.IsNotNull(pbtgs); var settings = pbtgs.SettingsForBuildTarget(EditorUserBuildSettings.selectedBuildTargetGroup); Assert.IsNotNull(settings); Assert.IsNotNull(settings.Manager); Assert.AreEqual(testManager, settings.Manager); }