// 解压 streaming upk 包 public void UnpackStreaming() { state = STATE.UNPACK_FIRST_UPK; hotUI.HOT_InitUnpackStream(); //清空数据目录 if (Directory.Exists(Util.DataPath)) { Directory.Delete(Util.DataPath, true); } Directory.CreateDirectory(Util.DataPath); // 设备内存判断 if (PGameTools.GetStorageSize() < UnpackStreamingUpkMemorySize) { hotUI.OutOfMemory(UnpackStreamingUpkMemorySize); return; } // 解 streaming upk 包 string infoFilePath = Path.Combine(Util.AppContentPath(), "streaming.txt"); string upkFilePath = Path.Combine(Util.AppContentPath(), "streaming.upk"); UPKEngine.UnpackStreaming(infoFilePath, upkFilePath, Util.DataPath, this); }
public static void BuildFirstUPK() { // 版本路径 string versionPath = GetVersionBundlePath(); // 资源路径 string assetPath = Replace(string.Format("{0}{1}{2}", versionPath, Path.DirectorySeparatorChar, "first")); // 资源路径 string firstUpkPath = Replace(string.Format("{0}{1}{2}", versionPath, Path.DirectorySeparatorChar, "first_upk")); // upk 资源路径 string UPKPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.upk")); // UPK Info 资源路径 string streamingAssetPath = Replace(string.Format("{0}{1}{2}", Application.dataPath, Path.DirectorySeparatorChar, "StreamingAssets")); string InfoPath = Replace(string.Format("{0}{1}{2}", streamingAssetPath, Path.DirectorySeparatorChar, "first.txt")); // fristFile.txt 路径 string firstFilePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "first_files.txt")); // file.txt 路径 string filePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.txt")); // first upk dir if (Directory.Exists(firstUpkPath)) { Directory.Delete(firstUpkPath, true); } Directory.CreateDirectory(firstUpkPath); // 开始打包 List <UPKInfo> infoList = new List <UPKInfo>(); var fileData = File.ReadAllText(firstFilePath); var files = ReadFileInfo(fileData); for (int i = 0; i < files.Length; i++) { var file = files[i]; var fs = Replace(Path.Combine(assetPath, file.Path)); FileInfo filesInfo = new FileInfo(fs); UPKInfo filesuinfo = new UPKInfo(); filesuinfo.relativePath = "files.txt"; filesuinfo.absolutePath = filePath; filesuinfo.length = filesInfo.Length; infoList.Add(filesuinfo); } // 打包 UPKEngine.Pack(infoList, UPKPath, InfoPath); RGLog.Debug(" 生成 first upk 包"); }
// 解首包 upk private void UnpackFirstUpk() { state = STATE.UNPACK_FIRST_UPK; hotUI.HOT_InitUnpackFirst(); // 内存判断 if (PGameTools.GetStorageSize() < UnpackFirstMemorySize) { hotUI.HOT_InitUnpackFirst(); // 内存判断 if (PGameTools.GetStorageSize() < UnpackFirstMemorySize) { hotUI.OutOfMemory(UnpackFirstMemorySize); return; } //解 first upk 包 string infoFilePath = Path.Combine(Util.AppContentPath(), "first.txt"); string upkFilePath = Path.Combine(Util.DataPath, "first.upk"); UPKEngine.UnpackFirst(infoFilePath, upkFilePath, Util.DataPath, this); } }
/// <summary> /// 生成 streaming upk包 /// </summary> public static void BuildStreamingUPK() { //资源路径 string assetPath = Replace(string.Format("{0}{1}{2}", Application.dataPath, Path.DirectorySeparatorChar, "StreamingAssets")); // UPK 资源路径 string UPKPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "streaming.upk")); // UPK INFO 资源路径 string InfoPath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "streaming.txt")); // files.txt 路径 string filePath = Replace(string.Format("{0}{1}{2}", assetPath, Path.DirectorySeparatorChar, "files.txt")); //开始打包 List <UPKInfo> infoList = new List <UPKInfo>(); var fileData = File.ReadAllBytes(filePath); var files = ReadFileInfo(filePath); for (int i = 0; i < files.Length; i++) { var file = files[i]; var fs = Replace(Path.Combine(assetPath, file.Path)); FileInfo fileInfo = new FileInfo(fs); UPKInfo uinfo = new UPKInfo(); uinfo.relativePath = file.Path; uinfo.absolutePath = fs; uinfo.length = fileInfo.Length; infoList.Add(uinfo); } // 把files文件也加入 FileInfo filesInfo = new FileInfo(filePath); UPKInfo filesuinfo = new UPKInfo(); filesuinfo.relativePath = "files.txt"; filesuinfo.absolutePath = filePath; filesuinfo.length = filesInfo.Length; infoList.Add(filesuinfo); // 打包 UPKEngine.Pack(infoList, UPKPath, InfoPath); // 删除 streamingAssets 内的其他资源 // 删除文件 string[] streamingFiles = Directory.GetFiles(assetPath); for (int i = 0; i < streamingFiles.Length; i++) { if (!streamingFiles[i].Equals(UPKPath) && !streamingFiles[i].Equals(InfoPath)) { File.Delete(streamingFiles[i]); } } // 删除文件夹 string[] streamingDirs = Directory.GetDirectories(assetPath); for (int i = 0; i < streamingDirs.Length; i++) { Directory.Delete(streamingDirs[i], true); } RGLog.Debug(" 生成 streaming upk 包完成"); }