public void RecreateDLC() { BuildRule.Clear(); CopyDirectory.Clear(); IgnoreConst.Clear(); if (BuildRule.Count == 0) { //配置资源 BuildRule.Add(new BuildRuleConfig("Config", BuildRuleType.Directroy, true)); BuildRule.Add(new BuildRuleConfig("Lua", BuildRuleType.Directroy, true)); BuildRule.Add(new BuildRuleConfig("Language", BuildRuleType.Directroy, true)); BuildRule.Add(new BuildRuleConfig("Excel", BuildRuleType.Directroy, true)); BuildRule.Add(new BuildRuleConfig("Text", BuildRuleType.Directroy, true)); BuildRule.Add(new BuildRuleConfig("CSharp", BuildRuleType.Directroy, true)); //图片资源 BuildRule.Add(new BuildRuleConfig("Sprite", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("BG", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Icon", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Head", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Flag", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Texture", BuildRuleType.Directroy)); //其他资源 BuildRule.Add(new BuildRuleConfig("Audio", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("AudioMixer", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Material", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Music", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("PhysicsMaterial", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Video", BuildRuleType.Directroy)); //Prefab资源 BuildRule.Add(new BuildRuleConfig("Animator", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Prefab", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("Perform", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("System", BuildRuleType.Directroy)); BuildRule.Add(new BuildRuleConfig("UI", BuildRuleType.Directroy)); //场景资源 BuildRule.Add(new BuildRuleConfig("Scene", BuildRuleType.File)); } if (IgnoreConst.Count == 0) { //忽略的Const IgnoreConst.Add("CONFIG_DLCItem"); IgnoreConst.Add("CONFIG_DLCManifest"); } }
public DLCItem(DLCItemConfig config, AssetBundleManifest assetBundleManifest = null) { Config = config; Name = config.Name; IsActive = config.IsActive; ABManifest = assetBundleManifest; BuildRuleData.Clear(); CopyDirectory.Clear(); foreach (var item in DLCConfig.Config) { BuildRuleData.Add(item.Clone() as BuildRuleConfig); } CopyDirectory.AddRange(DLCConfig.CopyDirectory.ToArray()); //计算DLC的跟目录 AssetsRootPath = CalcAssetRootPath(Name); //计算出绝对路径(拷贝文件使用) AbsRootPath = Path.Combine(Application.dataPath, AssetsRootPath.Replace("Assets/", "")); //计算出目标路径 TargetPath = Path.Combine(Const.Path_StreamingAssets, Name); //计算Const路径 ConstPath = Path.Combine(Const.RPath_Resources, Const.Dir_Const, Name + "Const.cs"); //计算Manifest路径 if (IsEditorMode) { ManifestPath = Path.Combine(AssetsRootPath, Const.Dir_Config); } else { ManifestPath = Path.Combine(TargetPath, Const.Dir_Config); } //计算Config路径 if (IsEditorMode) { ConfigPath = Path.Combine(AssetsRootPath, Const.Dir_Config); } else { ConfigPath = Path.Combine(TargetPath, Const.Dir_Config); } //计算语言包路径 if (IsEditorMode) { LanguagePath = Path.Combine(AssetsRootPath, Const.Dir_Language); } else { LanguagePath = Path.Combine(TargetPath, Const.Dir_Language); } //计算lua路径 if (IsEditorMode) { LuaPath = Path.Combine(AssetsRootPath, Const.Dir_Lua); } else { LuaPath = Path.Combine(TargetPath, Const.Dir_Lua); } //计算Text路径 if (IsEditorMode) { TextPath = Path.Combine(AssetsRootPath, Const.Dir_TextAssets); } else { TextPath = Path.Combine(TargetPath, Const.Dir_TextAssets); } //计算CS路径 if (IsEditorMode) { CSPath = Path.Combine(AssetsRootPath, Const.Dir_CSharp); } else { CSPath = Path.Combine(TargetPath, Const.Dir_CSharp); } //计算Excel路径 if (IsEditorMode) { ExcelPath = Path.Combine(AssetsRootPath, Const.Dir_Excel); } else { ExcelPath = Path.Combine(TargetPath, Const.Dir_Excel); } #region func GenerateCopyPath(); GeneralPath(); //建立拷贝路径 void GenerateCopyPath() { AbsCopyDirectory.Clear(); if (CopyDirectory != null) { for (int i = 0; i < CopyDirectory.Count; ++i) { AbsCopyDirectory.Add(Path.Combine(AbsRootPath, CopyDirectory[i])); } } } //建立打包路径 void GeneralPath() { foreach (var item in BuildRuleData) { string tempRootPath = AssetsRootPath; if (!item.CustomRootPath.IsInv()) { tempRootPath = item.CustomRootPath; } item.FullSearchPath = tempRootPath + "/" + item.Name; } } #endregion }
//刷新DLC public void RefreshDLC() { Config.Clear(); AllDirectory.Clear(); CopyDirectory.Clear(); IgnoreConstSet.Clear(); ConfigExtend.Clear(); ConfigAll.Clear(); EditorExtend.Clear(); EditorAll.Clear(); foreach (var item in BuildRule) { AddBuildConfig(item); } foreach (var item in IgnoreConst) { AddIgnoreConst(item); } //加载内部dlc ConfigInternal = new DLCItemConfig(Const.STR_InternalDLC); EditorInternal = new DLCItem(ConfigInternal); //加载原生dlc ConfigNative = new DLCItemConfig(Const.STR_NativeDLC); EditorNative = new DLCItem(ConfigNative); //加载其他额外DLC foreach (var item in DLC) { var dlcItem = new DLCItemConfig(item.Name); ConfigExtend.Add(dlcItem); EditorExtend.Add(new DLCItem(dlcItem)); } ConfigAll = new List <DLCItemConfig>(ConfigExtend); ConfigAll.Add(ConfigInternal); ConfigAll.Add(ConfigNative); EditorAll = new List <DLCItem>(EditorExtend); EditorAll.Add(EditorInternal); EditorAll.Add(EditorNative); #if UNITY_EDITOR if (!Application.isPlaying) { foreach (var item in AllDirectory) { FileUtil.EnsureDirectory(Path.Combine(Const.Path_NativeDLC, item)); } foreach (var item in DLC) { foreach (var dic in AllDirectory) { FileUtil.EnsureDirectory(Path.Combine(Const.Path_Bundles, item.Name, dic)); } } } #endif }