示例#1
0
        //压缩extendsFoler.txt zipFiles
        public static void ZipAssetbundles()
        {
            HugulaExtensionFolderEditor.instance = null;
            var           zipFiles          = HugulaExtensionFolderEditor.instance.ZipFiles;
            List <string> outZips           = new List <string>();
            string        zipGroupName      = "zip_group_{0}.zip";
            string        zipedName         = "";
            string        zipedPath         = "";
            List <string> fileToZip         = null;
            List <string> fileToZipFullPath = new List <string>();
            List <ABInfo> deleteAbList      = new List <ABInfo>();

            EditorUtility.DisplayProgressBar("Zip Some Streaming AssetBundle File", "", 0.09f);

            for (int i = 0; i < zipFiles.Count; i++)
            {
                fileToZip = zipFiles[i];
                zipedName = string.Format(zipGroupName, i);
                zipedPath = Path.Combine(CUtils.realStreamingAssetsPath, zipedName);
                fileToZipFullPath.Clear();
                foreach (var p in fileToZip)
                {
                    string ab = CUtils.GetRightFileName(p);
                    deleteAbList.Add(new ABInfo(ab, 0, 0, 0));
                    fileToZipFullPath.Add(Path.Combine(CUtils.realStreamingAssetsPath, ab));
                }

                EditorUtility.DisplayProgressBar("Zip AssetBundle File ", zipedName, (float)i / (float)zipFiles.Count);

                if (ZipHelper.CreateZip(zipedPath, fileToZipFullPath))
                {
                    outZips.Add(zipedName);
                }

                //delete source assetbundle
                DeleteStreamingFiles(deleteAbList);
            }

            var zipins = ZipConfigs.CreateInstance();

            zipins.zipFiles = outZips;
            EditorUtility.ClearProgressBar();
        }
示例#2
0
        public static void GenerateAssetBundlesUpdateFile(string[] allBundles)
        {
            string title = "Generate Update File ";
            string info  = "Compute crc32";

            EditorUtility.DisplayProgressBar(title, info, 0.1f);
            Dictionary <string, object[]> firstCrcDict = new Dictionary <string, object[]>();
            HashSet <string> manualFileList            = new HashSet <string>();
            Dictionary <string, object[]> currCrcDict  = new Dictionary <string, object[]>();
            Dictionary <string, object[]> diffCrcDict  = new Dictionary <string, object[]>();

            #region 读取首包
            bool firstExists = SplitPackage.ReadFirst(firstCrcDict, manualFileList);
            Debug.Log("manualFileList.Count =" + manualFileList.Count);
            #endregion

            SplitPackage.DeleteSplitPackageResFolder();

            #region 生成校验列表
            SplitPackage.UpdateOutPath = null; SplitPackage.UpdateOutDevelopPath = null;
            AssetDatabase.Refresh();
            StringBuilder[] sbs           = SplitPackage.CreateCrcListContent(allBundles, firstCrcDict, currCrcDict, diffCrcDict, manualFileList);
            uint            streaming_crc = SplitPackage.CreateStreamingCrcList(sbs[0]);    //本地列表
            // System.Threading.Thread.Sleep(1000);
            uint diff_crc = SplitPackage.CreateStreamingCrcList(sbs[1], firstExists, true); //增量列表
            // System.Threading.Thread.Sleep(1000);
            CUtils.DebugCastTime("Time CreateStreamingCrcList End");
            #endregion

            #region 生成版本号
            //生成版本号码
            SplitPackage.CreateVersionAssetBundle(diff_crc);
            SplitPackage.CreateDevelopVersionAssetBundle(diff_crc);
            CUtils.DebugCastTime("Time CreateVersionAssetBundle End");
            #endregion

            #region copy更新文件导出

            SplitPackage.CopyVersionToSplitFolder(diff_crc);

            SplitPackage.CopyChangeFileToSplitFolder(firstExists, firstCrcDict, currCrcDict, diffCrcDict, manualFileList);

            CUtils.DebugCastTime("Time CopyChangeFileToSplitFolder End");

            Debug.LogFormat("streaming_crc={0},diff_crc{1}", streaming_crc, diff_crc);

            Debug.LogFormat(" firstCrcDict={0},currCrcDict={1},diffCrcDict={2},manualFileList={3}", firstCrcDict.Count, currCrcDict.Count, diffCrcDict.Count, manualFileList.Count);

            if (CheckZipPlatform())
            {
                SplitPackage.ZipAssetbundles();
            }
            else
            {
                ZipConfigs.Delete();
            }
            #endregion

            #region  除手动加载文件
#if (UNITY_ANDROID || UNITY_IOS) //&& !UNITY_EDITOR
            bool spExtFolder = HugulaSetting.instance.spliteExtensionFolder;
            if (spExtFolder)
            {
                SplitPackage.DeleteStreamingFiles(manualFileList);
            }
#endif
            #endregion

            EditorUtility.ClearProgressBar();
        }