public static bool UpgradeSettingsToPerBuildTarget(string path) { var generalSettings = GetPlayerIdentityGeneralSettingsInstance(path); if (generalSettings == null) { return(false); } if (!AssetDatabase.IsMainAsset(generalSettings)) { return(false); } PlayerIdentityGeneralSettings newSettings = ScriptableObject.CreateInstance <PlayerIdentityGeneralSettings>() as PlayerIdentityGeneralSettings; newSettings.Manager = generalSettings.Manager; generalSettings = null; AssetDatabase.DeleteAsset(path); PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = ScriptableObject.CreateInstance <PlayerIdentityGeneralSettingsPerBuildTarget>() as PlayerIdentityGeneralSettingsPerBuildTarget; AssetDatabase.CreateAsset(buildTargetSettings, path); buildTargetSettings.SetSettingsForBuildTarget(EditorUserBuildSettings.selectedBuildTargetGroup, newSettings); AssetDatabase.AddObjectToAsset(newSettings, path); AssetDatabase.SaveAssets(); Debug.LogWarningFormat("PlayerIdentity General Settings have been upgraded to be per-Build Target Group. Original settings were moved to Build Target Group {0}.", EditorUserBuildSettings.selectedBuildTargetGroup); return(true); }
public void OnPreprocessBuild(BuildReport report) { // Always remember to cleanup preloaded assets after build to make sure we don't // dirty later builds with assets that may not be needed or are out of date. CleanOldSettings(); PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = null; EditorBuildSettings.TryGetConfigObject(PlayerIdentityGeneralSettings.k_SettingsKey, out buildTargetSettings); if (buildTargetSettings == null) { return; } PlayerIdentityGeneralSettings settings = buildTargetSettings.SettingsForBuildTarget(report.summary.platformGroup); if (settings == null) { return; } UnityEngine.Object[] preloadedAssets = PlayerSettings.GetPreloadedAssets(); if (!preloadedAssets.Contains(settings)) { var assets = preloadedAssets.ToList(); assets.Add(settings); PlayerSettings.SetPreloadedAssets(assets.ToArray()); } }
static void PlayModeStateChanged(PlayModeStateChange state) { PlayerIdentityGeneralSettingsPerBuildTarget buildTargetSettings = null; EditorBuildSettings.TryGetConfigObject(PlayerIdentityGeneralSettings.k_SettingsKey, out buildTargetSettings); if (buildTargetSettings == null) { return; } PlayerIdentityGeneralSettings instance = buildTargetSettings.SettingsForBuildTarget(BuildTargetGroup.Standalone); if (instance == null || !instance.InitManagerOnStart) { return; } instance.InternalPlayModeStateChanged(state); }