少年修仙传客户端基础资源
CH-HWJ35
2018-08-08 4a01f01a505ed1ed0af12832594c19f4d50cd8dc
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_client
1个文件已修改
2个文件已添加
407 ■■■■ 已修改文件
Assets/Editor/Tool/AssetBundleBuildExtersion.cs 138 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/BuildExtersion.cs 257 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/BuildExtersion.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Assets/Editor/Tool/AssetBundleBuildExtersion.cs
@@ -4,75 +4,75 @@
using UnityEditor;
using System.IO;
public class AssetBundleBuildExtersion
{
    public static void Build(string _output, string _category, BuildAssetBundleOptions _bundleOption, BuildTarget _buildTarget)
    {
        var assetBundles = AssetDatabase.GetAllAssetBundleNames();
        List<string> targetAssetBundles = new List<string>();
        for (int i = 0; i < assetBundles.Length; i++)
        {
            var bundleName = assetBundles[i];
            if (bundleName.StartsWith(_category))
            {
                targetAssetBundles.Add(bundleName);
            }
        }
        var assets = new List<AssetBundleBuild>();
        for (int i = 0; i < targetAssetBundles.Count; i++)
        {
            var assetBundleBuild = new AssetBundleBuild();
            assetBundleBuild.assetBundleName = targetAssetBundles[i];
            assetBundleBuild.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(targetAssetBundles[i]);
            assets.Add(assetBundleBuild);
        }
        var rootPath = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category);
        var mainFile = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget));
        var mainFileRename = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category, "_assetbundle");
        var manifest = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget), ".manifest");
        var manifestRename = StringUtility.Contact(Application.dataPath.Replace("Assets", ""), _output, Path.AltDirectorySeparatorChar, _category, "_assetbundle.manifest");
        if (Directory.Exists(rootPath))
        {
            Directory.Delete(rootPath, true);
        }
        Directory.CreateDirectory(rootPath);
        if (File.Exists(mainFileRename))
        {
            File.Delete(mainFileRename);
        }
        if (File.Exists(manifestRename))
        {
            File.Delete(manifestRename);
        }
        BuildPipeline.BuildAssetBundles(_output, assets.ToArray(), _bundleOption, _buildTarget);
        File.Move(mainFile, mainFileRename);
        File.Move(manifest, manifestRename);
    }
    static string GetMainFestFileName(BuildTarget _target)
    {
        switch (_target)
        {
            case BuildTarget.StandaloneWindows:
                return "standalone";
            case BuildTarget.Android:
                return "android";
            case BuildTarget.iOS:
                return "ios";
            default:
                return string.Empty;
        }
public class AssetBundleBuildExtersion
{
    public static void Build(string _output, string _category, BuildAssetBundleOptions _bundleOption, BuildTarget _buildTarget)
    {
        var assetBundles = AssetDatabase.GetAllAssetBundleNames();
        List<string> targetAssetBundles = new List<string>();
        for (int i = 0; i < assetBundles.Length; i++)
        {
            var bundleName = assetBundles[i];
            if (bundleName.StartsWith(_category))
            {
                targetAssetBundles.Add(bundleName);
            }
        }
        var assets = new List<AssetBundleBuild>();
        for (int i = 0; i < targetAssetBundles.Count; i++)
        {
            var assetBundleBuild = new AssetBundleBuild();
            assetBundleBuild.assetBundleName = targetAssetBundles[i];
            assetBundleBuild.assetNames = AssetDatabase.GetAssetPathsFromAssetBundle(targetAssetBundles[i]);
            assets.Add(assetBundleBuild);
        }
        var rootPath = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, _category);
        var mainFile = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget));
        var mainFileRename = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, _category, "_assetbundle");
        var manifest = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, GetMainFestFileName(_buildTarget), ".manifest");
        var manifestRename = StringUtility.Contact(_output, Path.AltDirectorySeparatorChar, _category, "_assetbundle.manifest");
        if (Directory.Exists(rootPath))
        {
            Directory.Delete(rootPath, true);
        }
        Directory.CreateDirectory(rootPath);
        if (File.Exists(mainFileRename))
        {
            File.Delete(mainFileRename);
        }
        if (File.Exists(manifestRename))
        {
            File.Delete(manifestRename);
        }
        BuildPipeline.BuildAssetBundles(_output, assets.ToArray(), _bundleOption, _buildTarget);
        File.Move(mainFile, mainFileRename);
        File.Move(manifest, manifestRename);
    }
    static string GetMainFestFileName(BuildTarget _target)
    {
        switch (_target)
        {
            case BuildTarget.StandaloneWindows:
                return "standalone";
            case BuildTarget.Android:
                return "android";
            case BuildTarget.iOS:
                return "ios";
            default:
                return string.Empty;
        }
    }
}
Assets/Editor/Tool/BuildExtersion.cs
New file
@@ -0,0 +1,257 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using System;
public class BuildExtersion
{
    public static void BuildMap()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateLevelSetting.SetAllLevelAssetBundleName();
                ExcuteBuildAsset("maps", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包地图失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildEffect()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateEffectPrefabSetting.SetAllEffectPrefabAssetBundleName();
                ExcuteBuildAsset("effect", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包特效失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildMob()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateMobSetting.SetAllMobAssetBundleName();
                ExcuteBuildAsset("mob", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包NPC模型失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildConfig()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName();
                ExcuteBuildAsset("config", buildParameters);
                TableTool.ReadAllTxtToBytes(StringUtility.Contact(buildParameters.GetWholeOutPutPath(), "/config"));
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包配置表失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildAudio()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateAudioSetting.SetAllAudioAssetBundleName();
                ExcuteBuildAsset("audio", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包音效失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildShader()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateShaderSetting.SetAllShaderAssetBundleName();
                ExcuteBuildAsset("graphic", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包shader失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void BuildUI()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (!buildParameters.error)
            {
                UpdateUIPrefabSetting.SetAllUIPrefabAssetBundleName();
                UpdateUIWindowSetting.SetAllUIWindowAssetBundleName();
                UpdateSpriteSetting.SetAllSpriteAssetBundleName();
                ExcuteBuildAsset("ui", buildParameters);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("打包ui失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    public static void MakeAssetVersionFile()
    {
        try
        {
            var buildParameters = new BuildParameters();
            if (buildParameters.error)
            {
                var fileInfoes = new List<FileInfo>();
                FileExtersion.GetAllDirectoryFileInfos(buildParameters.GetWholeOutPutPath(), fileInfoes);
                AssetsVersionMaker.WriteAssetsVersionFile(buildParameters.GetWholeOutPutPath(), fileInfoes);
            }
            else
            {
                EditorApplication.Exit(1);
            }
        }
        catch (Exception ex)
        {
            Debug.Log("生成AssetVersion失败");
            Debug.Log(ex);
            EditorApplication.Exit(1);
        }
    }
    private static void ExcuteBuildAsset(string _category, BuildParameters _params)
    {
        var opt = BuildAssetBundleOptions.None;
        opt |= BuildAssetBundleOptions.ChunkBasedCompression;
        opt |= BuildAssetBundleOptions.DeterministicAssetBundle;
        AssetBundleBuildExtersion.Build(_params.GetWholeOutPutPath(), _category, opt, _params.buildTarget);
    }
    class BuildParameters
    {
        public bool error = false;
        public string outputPath;
        public BuildTarget buildTarget;
        public BuildParameters()
        {
            try
            {
                var args = Environment.GetCommandLineArgs();
                for (int i = 0; i < args.Length; i++)
                {
                    var arg = args[i];
                    if (arg.ToLower() == "-outputpath")
                    {
                        outputPath = args[i + 1];
                    }
                    else if (arg.ToLower() == "-buildtarget")
                    {
                        switch (args[i + 1].ToLower())
                        {
                            case "android":
                                buildTarget = BuildTarget.Android;
                                break;
                            case "ios":
                                buildTarget = BuildTarget.iOS;
                                break;
                        }
                    }
                }
                error = false;
            }
            catch (Exception ex)
            {
                error = true;
                Debug.LogException(ex);
                EditorApplication.Exit(1);
            }
        }
        public string GetWholeOutPutPath()
        {
            return StringUtility.Contact(outputPath, "/", buildTarget.ToString().ToLower());
        }
    }
}
Assets/Editor/Tool/BuildExtersion.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 42af103e31b116e4fb47e0017b546c05
timeCreated: 1533627572
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant: