//读取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(); }
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(); }
/// <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); }
/// <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); }