| Core/GameEngine/Login/Launch.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Launch/AssetDeCompressTask.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| System/Launch/AssetDeCompressTask.cs.meta | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
Core/GameEngine/Login/Launch.cs
@@ -188,16 +188,12 @@ yield return null; } var files = new List<FileInfo>(); FileExtersion.GetAllDirectoryFileInfos(ResourcesPath.Instance.ExternalStorePath, files); foreach (var item in files) progressBuf = progress; var decompressProgress = AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath); while (!decompressProgress.done) { var fullName = item.FullName; if (fullName.EndsWith(".7z")) { SevenZipUtility.DeCompress(fullName, Path.GetDirectoryName(fullName)); File.Delete(fullName); } progress = progressBuf + decompressProgress.progress * 0.1f; yield return null; } } break; @@ -302,16 +298,12 @@ LocalSave.SetString("AssetCopyCompleted_IOS", VersionConfig.Get().version); var files = new List<FileInfo>(); FileExtersion.GetAllDirectoryFileInfos(ResourcesPath.Instance.ExternalStorePath, files); foreach (var item in files) progressBuf = progress; var decompressProgress = AssetDeCompressTask.Decompress(ResourcesPath.Instance.ExternalStorePath); while (!decompressProgress.done) { var fullName = item.FullName; if (fullName.EndsWith(".7z")) { SevenZipUtility.DeCompress(fullName, Path.GetDirectoryName(fullName)); File.Delete(fullName); } progress = progressBuf + decompressProgress.progress * 0.1f; yield return null; } } break; System/Launch/AssetDeCompressTask.cs
New file @@ -0,0 +1,86 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; using System.IO; using System.Threading; public class AssetDeCompressTask { public static DecompressProgress Decompress(string path) { var progress = new DecompressProgress(); var files = new List<FileInfo>(); FileExtersion.GetAllDirectoryFileInfos(path, files); for (var i = files.Count - 1; i >= 0; i--) { var fullName = files[i].FullName; if (fullName.EndsWith(".7z")) { files.RemoveAt(i); } } var total = files.Count; if (total == 0) { progress.progress = 1f; progress.done = true; return progress; } ThreadPool.QueueUserWorkItem((object a) => { var index = 0; foreach (var item in files) { var fullName = item.FullName; if (fullName.EndsWith(".7z")) { SevenZipUtility.DeCompress(fullName, Path.GetDirectoryName(fullName)); File.Delete(fullName); index++; progress.progress = index / (float)total; } } progress.done = true; }); return progress; } public class DecompressProgress { object progressLock = new object(); float m_Progress = 0f; public float progress { get { return m_Progress; } set { lock (progressLock) { m_Progress = value; } } } object doneLock = new object(); bool m_Done = false; public bool done { get { return m_Done; } set { lock (doneLock) { m_Done = value; } } } } } System/Launch/AssetDeCompressTask.cs.meta
New file @@ -0,0 +1,12 @@ fileFormatVersion: 2 guid: 2ca4a4bf756f36248be9ddbbf60e835a timeCreated: 1541123413 licenseType: Pro MonoImporter: serializedVersion: 2 defaultReferences: [] executionOrder: 0 icon: {instanceID: 0} userData: assetBundleName: assetBundleVariant: