少年修仙传客户端基础资源
lwb
2020-10-23 a52c024c4d5e4a112ec12e65f5b209d0698c1562
Assets/Editor/Tool/ClientPackage.cs
@@ -6,7 +6,8 @@
using System.IO;
using System.Text.RegularExpressions;
using System.Text;
using TableConfig;
using Beebyte.Obfuscator;
public class ClientPackage
{
@@ -15,9 +16,22 @@
    public static string auditOutTime = string.Empty;
    public static string SDK_PLUGIN_PROJECT {
    public static string SDK_PLUGIN_PROJECT
    {
        get { return LocalSave.GetString("SDK_PROJECT_PATH"); }
        set { LocalSave.SetString("SDK_PROJECT_PATH", value); }
    }
    public static bool obfuscatorEnabled
    {
        get { return LocalSave.GetBool("obfuscatorEnabled", false); }
        set { LocalSave.SetBool("obfuscatorEnabled", value); }
    }
    public static int AssetPrior
    {
        get { return LocalSave.GetInt("HalfAssetPrior", 1); }
        set { LocalSave.SetInt("HalfAssetPrior", value); }
    }
    static string ANDROID_PLUGIN_PATH = Application.dataPath + "/Plugins/Android";
@@ -88,18 +102,57 @@
        if (smallPackages.Count > 0)
        {
            FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
            var files = new List<FileInfo>();
            FileExtersion.GetAllDirectoryFileInfos(ResourcesPath.Instance.StreamingAssetPath, files);
            var builtInFiles = new List<FileInfo>();
            FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, files);
            foreach (var file in files)
            {
                var fileName = Path.GetFileName(file.FullName);
                if (!fileName.Contains("builtin"))
                if (file.FullName.Contains("builtin"))
                {
                    File.Delete(file.FullName);
                    builtInFiles.Add(file);
                    continue;
                }
                if (file.FullName.Contains("Contact.txt")
                    || file.FullName.Contains("HelpInfo.txt")
                    || file.FullName.Contains("PriorBundle.txt")
                    || file.FullName.Contains("PriorLanguage.txt")
                    || file.FullName.Contains("ApkUpdateUrl.txt")
                    || file.FullName.Contains("InitialFunction.txt"))
                {
                    builtInFiles.Add(file);
                    continue;
                }
                File.Delete(file.FullName);
            }
            var totalCount = builtInFiles.Count;
            var completeCount = 0;
            foreach (var item in builtInFiles)
            {
                var extension = Path.GetExtension(item.FullName);
                if (extension == ".meta")
                {
                    continue;
                }
                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
                var directory = Path.GetDirectoryName(to);
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }
                File.Copy(item.FullName, to, true);
                completeCount++;
            }
            EditorUtility.ClearProgressBar();
            for (int i = 0; i < smallPackages.Count; i++)
            {
@@ -113,12 +166,15 @@
        if (halfPackages.Count > 0)
        {
            Config.Instance.LoadPriorBundleConfig();
            FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
            PriorBundleConfig.Init(true);
            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);
@@ -127,15 +183,16 @@
                    fileName = fileName.Replace(extersion, "");
                }
                if (!PriorBundleConfig.mobs.Contains(fileName))
                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);
@@ -144,15 +201,16 @@
                    fileName = fileName.Replace(extersion, "");
                }
                if (!PriorBundleConfig.scenes.Contains(fileName))
                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);
@@ -161,15 +219,16 @@
                    fileName = fileName.Replace(extersion, "");
                }
                if (!PriorBundleConfig.audios.Contains(fileName))
                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);
@@ -178,12 +237,56 @@
                    fileName = fileName.Replace(extersion, "");
                }
                if (!PriorBundleConfig.effects.Contains(fileName))
                var prior = PriorBundleConfig.GetAssetPrior(AssetVersion.AssetCategory.Effect, fileName);
                if (prior > AssetPrior)
                {
                    File.Delete(file.FullName);
                    excludeFileFullNames.Add(file.FullName);
                }
            }
            tempFiles.Clear();
            FileExtersion.GetAllDirectoryFileInfos(StringUtility.Contact(_assetBundlePath, "/ui/sprite"), tempFiles);
            foreach (var file in tempFiles)
            {
                var fileName = Path.GetFileName(file.FullName);
                if (fileName == "loadingbg")
                {
                    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 relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
                var directory = Path.GetDirectoryName(to);
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }
                var extension = Path.GetExtension(item.FullName);
                if (extension == ".meta")
                {
                    continue;
                }
                File.Copy(item.FullName, to, true);
                completeCount++;
            }
            EditorUtility.ClearProgressBar();
            for (int i = 0; i < halfPackages.Count; i++)
            {
#if UNITY_ANDROID
@@ -196,7 +299,31 @@
        if (bigPackages.Count > 0)
        {
            FileExtersion.DirectoryCopy(_assetBundlePath, ResourcesPath.Instance.StreamingAssetPath);
            var fromFiles = new List<FileInfo>();
            FileExtersion.GetAllDirectoryFileInfos(_assetBundlePath, fromFiles);
            var totalCount = fromFiles.Count;
            var completeCount = 0;
            foreach (var item in fromFiles)
            {
                var relativePath = FileExtersion.GetFileRelativePath(_assetBundlePath, item.FullName);
                var to = StringUtility.Contact(ResourcesPath.Instance.StreamingAssetPath, relativePath);
                var directory = Path.GetDirectoryName(to);
                if (!Directory.Exists(directory))
                {
                    Directory.CreateDirectory(directory);
                }
                var extension = Path.GetExtension(item.FullName);
                if (extension == ".meta")
                {
                    continue;
                }
                File.Copy(item.FullName, to, true);
                completeCount++;
            }
            for (int i = 0; i < bigPackages.Count; i++)
            {
#if UNITY_ANDROID
@@ -274,6 +401,14 @@
        Debug.LogFormat("执行Android SDK 文件拷贝,from:{0};to:{1}", StringUtility.Contact(_sdkPath, "/Android/release"), ANDROID_PLUGIN_PATH);
        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/Android/release"), ANDROID_PLUGIN_PATH);
        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/Android/", versionConfig.appId), ANDROID_PLUGIN_PATH);
        var option = AssetDatabase.LoadAssetAtPath<Options>("Assets/Editor/Beebyte/Obfuscator/ObfuscatorOptions.asset");
        if (option != null)
        {
            option.enabled = obfuscatorEnabled;
            EditorUtility.SetDirty(option);
        }
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
@@ -302,14 +437,27 @@
            Directory.Delete(iOS_PLUGIN_PATH, true);
        }
        if (!versionConfig.appId.Equals("test"))
        {
            FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/iOS/", versionConfig.appId), iOS_PLUGIN_PATH);
        }
        // if (!versionConfig.appId.Equals("test"))
        // {
        FileExtersion.DirectoryCopy(StringUtility.Contact(_sdkPath, "/ChannelDiff/iOS/", versionConfig.appId), iOS_PLUGIN_PATH);
        // }
        DateTime outTime;
        var correct = DateTime.TryParse(auditOutTime, out outTime);
        var directory = Application.dataPath + Path.DirectorySeparatorChar + "Resources/Config";
        if (!Directory.Exists(directory))
        {
            Directory.CreateDirectory(directory);
        }
        File.WriteAllText(Application.dataPath + Path.DirectorySeparatorChar + "Resources/Config/AuditTime.txt", correct ? auditOutTime : "");
        var option = AssetDatabase.LoadAssetAtPath<Options>("Assets/Editor/Beebyte/Obfuscator/ObfuscatorOptions.asset");
        if (option != null)
        {
            option.enabled = obfuscatorEnabled;
            EditorUtility.SetDirty(option);
        }
        AssetDatabase.SaveAssets();
        AssetDatabase.Refresh();
        PlayerSettings.iOS.buildNumber = VersionConfig.Get().buildIndex.ToString();
@@ -330,7 +478,7 @@
    {
        try
        {
            var newVersionConfigPath = StringUtility.Contact("Assets/Resources/ScriptableObject/Config/VersionConfig", ".asset");
            var newVersionConfigPath = StringUtility.Contact("Assets/Resources/VersionConfig", ".asset");
            var versionName = string.Empty;
            var fromVersionConfig = GetVersionConfig(_publisher, out versionName);
            var newVersionConfig = ScriptableObject.CreateInstance<VersionConfig>();
@@ -343,10 +491,18 @@
            newVersionConfig.buildTime = DateTime.Now.ToString("yy/MM/dd--HH:mm");
            newVersionConfig.buildIndex = _buildIndex;
            if (File.Exists(Application.dataPath + "/Resources/Game.txt"))
            {
                File.Delete(Application.dataPath + "/Resources/Game.txt");
            }
            File.WriteAllText(Application.dataPath + "/Resources/Game.txt", GetGameId(_publisher));
            AssetDatabase.CreateAsset(newVersionConfig, newVersionConfigPath);
            EditorUtility.SetDirty(newVersionConfig);
            SetIconAndSplashImage(versionName);
            //SetCreateRoleAnimation();
            PlayerSettings.companyName = "TheSecondWorld";
            PlayerSettings.productName = newVersionConfig.productName;
@@ -358,13 +514,11 @@
            PlayerSettings.allowedAutorotateToPortraitUpsideDown = false;
            PlayerSettings.bundleVersion = VersionConfig.GetVersionNumber(newVersionConfig.version).ToString();
            var grachicSettings = new SerializedObject(AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/GraphicsSettings.asset")[0]);
            var lightmapStripping = grachicSettings.FindProperty("m_LightmapStripping");
            lightmapStripping.intValue = 0;
            var fogStripping = grachicSettings.FindProperty("m_FogStripping");
            fogStripping.intValue = 0;
            grachicSettings.ApplyModifiedProperties();
            if (GetBuildTarget() == BuildTargetGroup.Android)
            {
                CSObjectWrapEditor.Generator.ClearAll();
                CSObjectWrapEditor.Generator.GenAll();
            }
        }
        catch (Exception ex)
        {
@@ -399,6 +553,22 @@
        return null;
    }
    static string GetGameId(string _publisher)
    {
        var lines = File.ReadAllLines(versionsFilePath);
        for (int i = 2; i < lines.Length; i++)
        {
            var line = lines[i];
            var lineStrings = line.Split('\t');
            if (lineStrings[0] == _publisher)
            {
                return lineStrings[7];
            }
        }
        return "xbqy";
    }
    static void SetIconAndSplashImage(string _versionName)
    {
        var buildTarget = GetBuildTarget();
@@ -431,6 +601,22 @@
        }
    }
    public static void SetCreateRoleAnimation()
    {
        var from = "Assets/Editor/Video/CreateRoleMovie.mp4";
        var to = "Assets/StreamingAssets/CreateRoleMovie.mp4";
        if (!Directory.Exists(Application.dataPath + "StreamingAssets"))
        {
            Directory.CreateDirectory(Application.dataPath + "StreamingAssets");
        }
        if (AssetDatabase.LoadAssetAtPath<UnityEngine.Video.VideoClip>(to) == null)
        {
            AssetDatabase.CopyAsset(from, to);
        }
    }
    static BuildTargetGroup GetBuildTarget()
    {
#if UNITY_ANDROID