From 6b6d10e0cf634dcfa862f88aa140602103e5a733 Mon Sep 17 00:00:00 2001
From: client_Wu Xijin <364452445@qq.com>
Date: 星期四, 01 十一月 2018 17:08:02 +0800
Subject: [PATCH] 3335 资源打包使用7zip压缩
---
Assets/Editor/Tool/ClientPackage.cs | 77 +++++++++++++++++++++++++++++---------
1 files changed, 59 insertions(+), 18 deletions(-)
diff --git a/Assets/Editor/Tool/ClientPackage.cs b/Assets/Editor/Tool/ClientPackage.cs
index f30872d..77f2ee8 100644
--- a/Assets/Editor/Tool/ClientPackage.cs
+++ b/Assets/Editor/Tool/ClientPackage.cs
@@ -135,11 +135,14 @@
if (halfPackages.Count > 0)
{
Config.Instance.LoadPriorBundleConfig();
- FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
- var files = new List<FileInfo>();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "mob"), files);
- foreach (var file in files)
+ var fromFiles = new List<FileInfo>();
+ FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, fromFiles);
+
+ var excludeFileFullNames = new List<string>();
+ var tempFiles = new List<FileInfo>();
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/mob"), tempFiles);
+ foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
var fileName = Path.GetFileName(file.FullName);
@@ -151,13 +154,13 @@
var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Mob, fileName);
if (prior > AssetPrior)
{
- File.Delete(file.FullName);
+ excludeFileFullNames.Add(file.FullName);
}
}
- files.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "maps"), files);
- foreach (var file in files)
+ tempFiles.Clear();
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/maps"), tempFiles);
+ foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
var fileName = Path.GetFileName(file.FullName);
@@ -169,13 +172,13 @@
var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Scene, fileName);
if (prior > AssetPrior)
{
- File.Delete(file.FullName);
+ excludeFileFullNames.Add(file.FullName);
}
}
- files.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "audio"), files);
- foreach (var file in files)
+ tempFiles.Clear();
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/audio"), tempFiles);
+ foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
var fileName = Path.GetFileName(file.FullName);
@@ -187,13 +190,13 @@
var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Audio, fileName);
if (prior > AssetPrior)
{
- File.Delete(file.FullName);
+ excludeFileFullNames.Add(file.FullName);
}
}
- files.Clear();
- FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, "effect"), files);
- foreach (var file in files)
+ tempFiles.Clear();
+ FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/effect"), tempFiles);
+ foreach (var file in tempFiles)
{
var extersion = Path.GetExtension(file.FullName);
var fileName = Path.GetFileName(file.FullName);
@@ -205,8 +208,46 @@
var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Effect, fileName);
if (prior > AssetPrior)
{
- File.Delete(file.FullName);
+ excludeFileFullNames.Add(file.FullName);
}
+ }
+
+ for (int i = fromFiles.Count - 1; i >= 0; i--)
+ {
+ var item = fromFiles[i];
+ if (excludeFileFullNames.Contains(item.FullName))
+ {
+ fromFiles.RemoveAt(i);
+ }
+ }
+
+ var totalCount = fromFiles.Count;
+ var completeCount = 0;
+ foreach (var item in fromFiles)
+ {
+ var directory = Path.GetDirectoryName(item.FullName);
+ if (!Directory.Exists(directory))
+ {
+ Directory.CreateDirectory(directory);
+ }
+
+ var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
+ var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
+#if UNITY_ANDROID
+ var extension = Path.GetExtension(item.FullName);
+ if (extension == ".meta")
+ {
+ continue;
+ }
+
+ to = to + ".7z";
+ SevenZipUtility.Compress(item.FullName, to);
+ UnityEditor.EditorUtility.DisplayProgressBar("姝e湪鍘嬬缉璧勬簮", item.Name, (float)completeCount / totalCount);
+#elif UNITY_IOS
+ File.Copy(item.FullName,to,true);
+#endif
+
+ completeCount++;
}
for (int i = 0; i < halfPackages.Count; i++)
@@ -286,7 +327,7 @@
PlayerSettings.Android.keystorePass = versionConfig.keystorePassword;
PlayerSettings.Android.keyaliasName = versionConfig.keystoreAlias;
PlayerSettings.Android.keyaliasPass = versionConfig.keystoreAliasPassword;
- PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;
+ // PlayerSettings.Android.targetSdkVersion = AndroidSdkVersions.AndroidApiLevel22;
PlayerSettings.Android.bundleVersionCode = VersionConfig.GetVersionNumber(versionConfig.version);
PlayerSettings.enableInternalProfiler = _development;
--
Gitblit v1.8.0