private static void ApplyRuleController()
        {
            var rules = BuildScript.GetBuildRules();

            AddRulesForSelection(rules, rules.searchPatternController);
        }
Example #2
0
        private static void ApplyRuleAsset()
        {
            var rules = BuildScript.GetBuildRules();

            AddRulesForSelection(rules, rules.searchPatternAsset);
        }
 private static void BuildStandalonePlayer()
 {
     BuildScript.BuildStandalonePlayer();
 }
 private static void CopyAssetBundles()
 {
     BuildScript.CopyAssetBundlesTo(Application.streamingAssetsPath);
 }
Example #5
0
        public static void BuildStandalonePlayer()
        {
            var outputPath = $"{c_RelativeDirPrefix}{GetPlatformName()}_EXE";            //EditorUtility.SaveFolderPanel("Choose Location of the Built Game", "", "");

            if (outputPath.Length == 0)
            {
                return;
            }

            var levels = GetLevelsFromBuildSettings();

            if (levels.Length == 0)
            {
                Debug.Log("Nothing to build.");
                return;
            }

            #region 根据XAsset BuildInScene配置复原Unity的BuildInScene 因为我们为了支持在编辑器模式下的测试而必须将所有Scene放到Unity的BuildInSetting里

            var assets = new List <string>();
            var rules  = BuildScript.GetBuildRules();
            foreach (var asset in rules.scenesInBuild)
            {
                var path = AssetDatabase.GetAssetPath(asset);
                if (string.IsNullOrEmpty(path))
                {
                    continue;
                }
                assets.Add(path);
            }
            foreach (var rule in rules.rules)
            {
                if (rule.searchPattern.Contains("*.unity"))
                {
                    assets.AddRange(rule.GetAssets());
                }
            }
            var scenes = new EditorBuildSettingsScene[assets.Count];
            for (var index = 0; index < assets.Count; index++)
            {
                var asset = assets[index];
                scenes[index] = new EditorBuildSettingsScene(asset, true);
            }
            EditorBuildSettings.scenes = scenes;

            #endregion

            // 如果执行打包,就强行替换为非本地调试模式,进行AB加载与云端服务器连接
            Updater updater       = Object.FindObjectOfType <Updater>();
            bool    isDevelopMode = updater.DevelopmentMode;
            updater.DevelopmentMode = false;

            var targetName = GetBuildTargetName(EditorUserBuildSettings.activeBuildTarget);
            if (targetName == null)
            {
                return;
            }
#if UNITY_5_4 || UNITY_5_3 || UNITY_5_2 || UNITY_5_1 || UNITY_5_0
            BuildOptions option = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None;
            BuildPipeline.BuildPlayer(levels, path + targetName, EditorUserBuildSettings.activeBuildTarget, option);
#else
            var buildPlayerOptions = new BuildPlayerOptions {
                scenes                  = levels,
                locationPathName        = outputPath + targetName,
                assetBundleManifestPath = GetAssetBundleManifestFilePath(),
                target                  = EditorUserBuildSettings.activeBuildTarget,
                options                 = EditorUserBuildSettings.development ? BuildOptions.Development : BuildOptions.None
            };
            BuildPipeline.BuildPlayer(buildPlayerOptions);
#endif
            updater.DevelopmentMode = isDevelopMode;
        }
Example #6
0
 private static void CopyBundles()
 {
     BuildScript.CopyAssets();
 }
 private static void OnEditorInitialize()
 {
     BuildScript.GetManifest();
     BuildScript.GetSettings();
     BuildScript.GetBuildRules();
 }
 private static void OnEditorInitialize()
 {
     EditorUtility.ClearProgressBar();
     BuildScript.GetManifest();
     BuildScript.GetBuildRules();
 }
Example #9
0
        private static void OnInitialize()
        {
            var sceneAssets = new List <string>();
            var rules       = BuildScript.GetBuildRules();

            foreach (var guid in AssetDatabase.FindAssets("t:Scene", rules.scenesFolders))
            {
                var assetPath = AssetDatabase.GUIDToAssetPath(guid);
                sceneAssets.Add(assetPath);
            }

            var patches     = new List <Patch>();
            var assets      = new List <AssetRef>();
            var searchPaths = new List <string>();
            var dirs        = new Dictionary <string, int>();

            foreach (var asset in rules.assets)
            {
                if (!File.Exists(asset.name))
                {
                    continue;
                }
                var dir = Path.GetDirectoryName(asset.name);
                if (!string.IsNullOrEmpty(dir))
                {
                    if (!searchPaths.Contains(dir))
                    {
                        dirs[dir] = searchPaths.Count;
                        searchPaths.Add(dir);
                    }
                }
                var ar = new AssetRef {
                    name = Path.GetFileName(asset.name), bundle = -1, dir = dirs[dir]
                };
                assets.Add(ar);
            }

            var scenes = new EditorBuildSettingsScene[sceneAssets.Count];

            for (var index = 0; index < sceneAssets.Count; index++)
            {
                var asset = sceneAssets[index];
                scenes[index] = new EditorBuildSettingsScene(asset, true);
                var dir = Path.GetDirectoryName(asset);
                if (!searchPaths.Contains(dir))
                {
                    searchPaths.Add(dir);
                }
            }

            for (var i = 0; i < rules.patches.Count; i++)
            {
                var item  = rules.patches[i];
                var patch = new Patch();
                patch.name = item.name;
                patches.Add(patch);
            }

            var developVersions = new Versions();

            developVersions.dirs    = searchPaths.ToArray();
            developVersions.assets  = assets;
            developVersions.patches = patches;
            Assets.platform         = BuildScript.GetPlatformName();
            //Assets.basePath = Environment.CurrentDirectory.Replace("\\", "/") + "/" + BuildScript.outputPath + "/";
            Assets.assetLoader      = AssetDatabase.LoadAssetAtPath;
            Assets.versionsLoader  += () => developVersions;
            Assets.onAssetLoaded   += rules.OnLoadAsset;
            Assets.onAssetUnloaded += rules.OnUnloadAsset;
            rules.BeginSample();
            EditorBuildSettings.scenes              = scenes;
            EditorApplication.playModeStateChanged += EditorApplicationOnplayModeStateChanged;
        }