private static void ApplyRuleController() { var rules = BuildScript.GetBuildRules(); AddRulesForSelection(rules, rules.searchPatternController); }
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); }
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; }
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(); }
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; }