Example #1
0
 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");
     }
 }
Example #2
0
        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
        }
Example #3
0
        //刷新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
        }