Пример #1
0
        //读取streamingAssets path里面的abinfo
        private static void ReadAssetToABInfos(string[] allBundles, FileManifest streamingManifest)
        {
            string title = "create crc list content ";

            var   allABInfos = new List <ABInfo>();
            float i          = 0;
            float allLen     = allBundles.Length;

            //忽略列表
            Dictionary <string, bool> ignore = new Dictionary <string, bool>();

            ignore.Add(CUtils.GetRightFileName(Common.CRC32_FILELIST_NAME), true);
            ignore.Add(CUtils.GetRightFileName(Common.CRC32_VER_FILENAME), true);
            ignore.Add(CUtils.GetRightFileName(CUtils.platform), true);

            string extension;

            foreach (var str in allBundles)
            {
                string url     = Path.Combine(Application.dataPath, str);
                uint   outCrc  = 0;
                uint   fileLen = 0;
                string abName  = str.Replace("\\", "/");
                string key     = EditorUtils.GetAssetBundleName(abName);
                //后缀替换
                extension = System.IO.Path.GetExtension(key);
                if (extension.Equals(Common.DOT_BYTES))//lua
                {
                    key = key.Replace(extension, Common.CHECK_ASSETBUNDLE_SUFFIX);
                }

                if (!ignore.ContainsKey(key))
                {
                    outCrc = CrcCheck.GetLocalFileCrc(url, out fileLen);
                    var extendsABinfo = streamingManifest.GetABInfo(key);
                    if (extendsABinfo == null)
                    {
                        extendsABinfo = new ABInfo(key, outCrc, fileLen, 0);
                        streamingManifest.Add(extendsABinfo);
                    }
                    extendsABinfo.priority  = 0;
                    extendsABinfo.crc32     = outCrc;
                    extendsABinfo.size      = fileLen;
                    extendsABinfo.assetPath = str;
                    allABInfos.Add(extendsABinfo);
                }
                EditorUtility.DisplayProgressBar(title, title + "=>" + i.ToString() + "/" + allLen.ToString(), i / allLen);
                i++;
            }

            EditorUtility.ClearProgressBar();
        }
Пример #2
0
        public static void CopyChangeFileToSplitFolder(bool firstExists, FileManifest firstCrcDict, FileManifest currCrcDict, FileManifest diffCrcDict, FileManifest manualFileList)
        {
            Dictionary <string, ABInfo> updateList = new Dictionary <string, ABInfo>();

            bool copyManual = HugulaSetting.instance.spliteExtensionFolder;

            if (firstExists) //没有首包不copy资源
            {
                Debug.LogFormat("copy diffCrcDict.count={0}", diffCrcDict.Count);

                var infos = diffCrcDict.allAbInfo;
                foreach (var ab in infos)
                {
                    updateList[ab.abName] = ab;// Debug.Log(ab);
                }
            }

            if (copyManual)//copy 手动下载列表
            {
                Debug.LogFormat("copy manualFileList.count={0},currCrcDict.count={1}", manualFileList.Count, currCrcDict.Count);
                if (manualFileList.Count > 0)
                {
                    var infos = manualFileList.allAbInfo;
                    foreach (var ab in infos)
                    {
                        var ckAb = currCrcDict.GetABInfo(ab.abName);
                        if (ckAb != null)
                        {
                            updateList[ab.abName] = ckAb;
                        }
                    }
                }
            }

            CopyFileToSplitFolder(updateList);

            AssetDatabase.Refresh();
        }
Пример #3
0
        /// <summary>
        /// 2 Creates the content of the crc list.
        /// </summary>
        /// <returns>The crc list content.</returns>
        /// <param name="allBundles">All bundles.</param>
        /// <param name="manualFileList">manual file list.</param>
        public static List <ABInfo>[] CreateCrcListContent(FileManifest firstCrcDict, FileManifest streamingManifest, FileManifest manualFileList)
        {
            string title = "create crc list content ";

            List <ABInfo>[] abInfoArray  = new List <ABInfo> [2];
            var             diffManifest = new List <ABInfo>();

            abInfoArray[0] = diffManifest;

            var   allBundles = streamingManifest.allAbInfo;
            float i          = 0;
            float allLen     = allBundles.Count;

            foreach (var extendsABinfo in allBundles)
            {
                if (firstCrcDict != null)
                {
                    ABInfo localFirstInfo = null;
                    if (!firstCrcDict.CheckABCrc(extendsABinfo))
                    {
                        var newAbinfo = extendsABinfo.Clone();
                        newAbinfo.assetPath = extendsABinfo.assetPath;
                        diffManifest.Add(newAbinfo);
                    }
                    else if ((localFirstInfo = firstCrcDict.GetABInfo(extendsABinfo.abName)) != null && !extendsABinfo.EqualsDependencies(localFirstInfo)) //dependencies change
                    {
                        var newAbinfo = extendsABinfo.Clone();
                        newAbinfo.assetPath = extendsABinfo.assetPath;
                        diffManifest.Add(newAbinfo);
                    }
                }
                EditorUtility.DisplayProgressBar(title, title + "=>" + i.ToString() + "/" + allLen.ToString(), i / allLen);
                i++;
            }

            EditorUtility.ClearProgressBar();
            return(abInfoArray);
        }
Пример #4
0
        /// <summary>
        /// 2 Creates the content of the crc list.
        /// </summary>
        /// <returns>The crc list content.</returns>
        /// <param name="allBundles">All bundles.</param>
        /// <param name="manualFileList">manual file list.</param>
        public static List <ABInfo>[] CreateCrcListContent(string[] allBundles, FileManifest firstCrcDict, FileManifest streamingManifest, FileManifest manualFileList)
        {
            string title = "create crc list content ";

            List <ABInfo>[] abInfoArray  = new List <ABInfo> [2];
            var             diffManifest = new List <ABInfo>();

            abInfoArray[0] = diffManifest;

            float i      = 0;
            float allLen = allBundles.Length;

            //忽略列表
            Dictionary <string, bool> ignore = new Dictionary <string, bool>();

            ignore.Add(CUtils.GetRightFileName(Common.CRC32_FILELIST_NAME), true);
            ignore.Add(CUtils.GetRightFileName(Common.CRC32_VER_FILENAME), true);
            ignore.Add(CUtils.GetRightFileName(CUtils.platform), true);

            string extension;

            foreach (var str in allBundles)
            {
                string url     = Path.Combine(Application.dataPath, str);
                uint   outCrc  = 0;
                uint   fileLen = 0;
                string abName  = str.Replace("\\", "/");
                string key     = BuildScript.GetAssetBundleName(abName);
                //后缀替换
                extension = System.IO.Path.GetExtension(key);
                if (string.IsNullOrEmpty(extension))
                {
                    key = key + Common.CHECK_ASSETBUNDLE_SUFFIX;
                }
                else if (extension.Equals(Common.DOT_BYTES))
                {
                    key = key.Replace(extension, Common.CHECK_ASSETBUNDLE_SUFFIX);
                }

                if (!ignore.ContainsKey(key))
                {
                    outCrc = CrcCheck.GetLocalFileCrc(url, out fileLen);
                    var extendsABinfo = streamingManifest.GetABInfo(key);
                    if (extendsABinfo == null)
                    {
                        extendsABinfo = new ABInfo(key, outCrc, fileLen, 0);
                        streamingManifest.Add(extendsABinfo);
                    }

                    extendsABinfo.crc32     = outCrc;
                    extendsABinfo.size      = fileLen;
                    extendsABinfo.assetPath = str;

                    if (firstCrcDict != null)
                    {
                        ABInfo localFirstInfo = null;
                        if (!firstCrcDict.CheckABCrc(extendsABinfo))
                        {
                            var newAbinfo = extendsABinfo.Clone();
                            newAbinfo.assetPath = str;
                            diffManifest.Add(newAbinfo);
                        }
                        else if ((localFirstInfo = firstCrcDict.GetABInfo(extendsABinfo.abName)) != null && !extendsABinfo.EqualsDependencies(localFirstInfo)) //dependencies change
                        {
                            var newAbinfo = extendsABinfo.Clone();
                            newAbinfo.assetPath = str;
                            diffManifest.Add(newAbinfo);
                        }
                    }
                }
                EditorUtility.DisplayProgressBar(title, title + "=>" + i.ToString() + "/" + allLen.ToString(), i / allLen);
                i++;
            }

            // CrcCheck.Clear();
            EditorUtility.ClearProgressBar();
            return(abInfoArray);
        }