private static void CreateCrcFile(string path, string fileName, uint code) { string json = Tools.SerializeObject(new rCRC(fileName + ".unity3d", code)); Tools.Save(path, "." + fileName + ".crc", System.Text.UTF8Encoding.UTF8.GetBytes(json)); File.SetAttributes(path + "." + fileName + ".crc", FileAttributes.Hidden); }
private static void BuildVersion(string lang, string path, string versionName) { //檢查目錄是否存在 if (Directory.Exists(path) == true) { List <rRes> container = new List <rRes>(); //取得目錄底下的Data檔案 string[] files = Directory.GetFiles(path, "*.*", SearchOption.AllDirectories); for (int i = 0; i < files.Length; i++) { FileInfo info = new FileInfo(files[i]); if (!CheckFileExtension(info)) { continue; } string filePath = Path.GetDirectoryName(files[i]).Replace("\\", "/"); rRes data = new rRes(); data.Version = Setting.Ver; data.FileName = info.Name; data.Path = GetDataPath(filePath, Application.dataPath + "/" + Setting.OutputAssetsFolder + "/"); data.FileSize = info.Length; data.MD5Code = GetMd5File(filePath + "/", info.Name); container.Add(data); } //整合資料 rRes[] resData = container.ToArray(); //轉成Json string json = Tools.SerializeObject(resData); //寫入檔案 Tools.Save(Application.dataPath + "/" + Setting.OutputAssetsFolder + "/" + lang + "/" + "Versions" + "/", versionName, System.Text.UTF8Encoding.UTF8.GetBytes(json)); } }
private static void Download(eLanguage lang, string path, string name) { using (WWW bundle = new WWW(path + name)) { //檢查下載錯誤訊息 if (bundle.error != null) { throw new System.Exception(bundle.error); } while (bundle.isDone == false) { if (bundle.error != null) { throw new System.Exception(bundle.error); } } //檢查是否下載完成 if (bundle.isDone == true) { byte[] xor = Tools.XOR(bundle.bytes, Setting.EncryptionKeyValue); string str = GetLocation(Setting.HTTP, Setting.User); string zPath = Application.dataPath + "/" + Setting.DownloadAssetsFolder + "/" + path.Replace(str, ""); Tools.Save(zPath, name, xor); } else { throw new System.Exception(bundle.error); } } }
private static void SaveInfo(rSave save) { string path = Application.streamingAssetsPath + "/"; string name = "HTTP.dat"; string json = Tools.SerializeObject(save); Tools.Save(path, name, System.Text.UTF8Encoding.UTF8.GetBytes(json)); AssetDatabase.Refresh(); }
//處理最小包 public static void HandleOutputAssets(eLanguage lang, bool isShow = true) { for (int i = 0; i < Setting.OutputCount; i++) { string[] files = Directory.GetFiles(Application.dataPath + "/" + Setting.InputAssetsFolder + "/" + GetLangPath(lang), Setting.OutputItems[i].value, SearchOption.AllDirectories); for (int j = 0; j < files.Length; j++) { string path = files[j].Replace("\\", "/"); string name = Path.GetFileName(path); string extension = Path.GetExtension(path); if (extension == ".meta") { continue; } string sourcePath = Application.dataPath + "/" + Setting.InputAssetsFolder + "/" + GetDataPath(Path.GetDirectoryName(path), Application.dataPath + "/" + Setting.InputAssetsFolder + "/"); string destPath = Application.dataPath + "/" + Setting.OutputAssetsFolder + "/" + GetDataPath(Path.GetDirectoryName(path), Application.dataPath + "/" + Setting.InputAssetsFolder + "/"); if (extension != ".txt") { CopyFile(name, sourcePath, destPath); } else { //讀取資料 byte[] data = Tools.Load(GetDataPath(sourcePath, name), name); //加密存檔 Tools.Save(GetDataPath(destPath, name), name, data, Setting.EncryptionKeyValue); } } } if (isShow) { EditorUtility.DisplayDialog("Copy", "Copy complete!", "OK"); } AssetDatabase.Refresh(); }