예제 #1
0
        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);
        }
예제 #2
0
        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());
            }
        }
예제 #3
0
        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);
        }