少年修仙传客户端基础资源
client_Wu Xijin
2018-11-01 6b6d10e0cf634dcfa862f88aa140602103e5a733
3335 资源打包使用7zip压缩
1个文件已修改
4个文件已添加
226 ■■■■■ 已修改文件
Assets/Editor/Tool/ClientPackage.cs 77 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/SevenZipUtility.cs 89 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/SevenZipUtility.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/SystemCMD.cs 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/SystemCMD.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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("正在压缩资源", 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;
Assets/Editor/Tool/SevenZipUtility.cs
New file
@@ -0,0 +1,89 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
public class SevenZipUtility
{
    static string m_SevenZipToolPath = string.Empty;
    static string sevenZipToolPath {
        get {
            if (string.IsNullOrEmpty(m_SevenZipToolPath))
            {
                if (Directory.Exists("C:/Program Files/7-Zip"))
                {
                    m_SevenZipToolPath = "C:/Program Files/7-Zip";
                }
                else
                {
                    m_SevenZipToolPath = "C:/Program Files (x86)/7-Zip";
                }
            }
            return m_SevenZipToolPath;
        }
    }
    public static void Compress(string from, string to)
    {
        if (File.Exists(to))
        {
            File.Delete(to);
        }
        var cmd = string.Format("\"{0}\\7z\" a {1} {2} -mx9", sevenZipToolPath, to, from);
        SystemCMD.RunCmd(cmd);
    }
    public static CompressProgress CompressStreamingAssets()
    {
        var files = new List<FileInfo>();
        FileExtersion.GetAllDirectoryFileInfos(Application.streamingAssetsPath, files);
        var progress = new CompressProgress();
        progress.total = files.Count;
        foreach (var item in files)
        {
            var fullName = item.FullName;
            var extension = Path.GetExtension(item.FullName);
            if (extension == ".meta")
            {
                continue;
            }
            var to = string.Empty;
            if (string.IsNullOrEmpty(extension))
            {
                to = fullName + ".7z";
            }
            else
            {
                to = fullName.Replace(extension, ".7z");
            }
            Compress(fullName, to);
            progress.complete++;
        }
        return progress;
    }
    public class CompressProgress
    {
        public int total;
        public int complete;
        public float progress {
            get {
                return complete / (float)total;
            }
        }
        public bool done {
            get {
                return complete >= total;
            }
        }
    }
}
Assets/Editor/Tool/SevenZipUtility.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f144847788b6f254083b077d968bc6f4
timeCreated: 1541055675
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Assets/Editor/Tool/SystemCMD.cs
New file
@@ -0,0 +1,36 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SystemCMD
{
    /// <summary>
    /// 调用终端执行命令
    /// </summary>
    /// <param name="command"></param>
    /// <returns></returns>
    public static string RunCmd(string command)
    {
        System.Diagnostics.Process p = new System.Diagnostics.Process();
        p.StartInfo.FileName = "cmd.exe";           //确定程序名
        p.StartInfo.Arguments = "/c " + command;    //确定程式命令行
        p.StartInfo.UseShellExecute = false;        //Shell的使用
        p.StartInfo.RedirectStandardInput = true;   //重定向输入
        p.StartInfo.RedirectStandardOutput = true; //重定向输出
        p.StartInfo.RedirectStandardError = true;   //重定向输出错误
        p.StartInfo.CreateNoWindow = true;          //设置置不显示示窗口
        p.Start();
        p.WaitForExit();
        string err = p.StandardError.ReadToEnd();
        string standoutput = p.StandardOutput.ReadToEnd();
        if (string.IsNullOrEmpty(err))
        {
            return standoutput;
        }
        else
        {
            return err;        //输出出流取得命令行结果果
        }
    }
}
Assets/Editor/Tool/SystemCMD.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 6de2d4b13bfadaf419c682196b36e001
timeCreated: 1541043601
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: