#region Copyright RenGuiYou. All rights reserved. //===================================================== // NeatlyFrameWork // Author: RenGuiyou // Feedback: mailto:750539605@qq.com //===================================================== #endregion using System; using System.IO; using System.Text; using System.Threading; using Pandora; using PandoraEditor; using UnityEditor; using UnityEngine; namespace NeatlyEditor { public static class NeatlyAssetPacker { public static void BuildLua() { LuaBuilder.Build(); } public static void BuildLuaSource() { LuaBuilder.BuildSource(); } public static void BuildAssetBundle() { AssetBundleImport.Init(); AssetBundleImport.ExportAtlas(); AssetBundleImport.ExportUIPanel(); AssetBundleImport.ExportScene(); AssetBundleImport.ImportSingle("Config"); var setting = BuildSetting.AssetsBuildSetting; if (setting.build_bm_font) { AssetBundleImport.ImportMultiCatalog("data/font_bm"); } if (setting.build_music) { AssetBundleImport.ExportMusic(); } if (setting.build_shader_variant) { AssetBundleImport.ImportSingle("data/variant"); } if (setting.build_sound) { AssetBundleImport.ExportSound(); } if (setting.build_video) { AssetBundleImport.ExportVideo(); } foreach (var v in setting.SinglePackerArray()) { if (!String.IsNullOrEmpty(v)) { AssetBundleImport.ImportSingle(v); } } foreach (var v in setting.MultiCatalogPackerArray()) { if (!String.IsNullOrEmpty(v)) { AssetBundleImport.ImportMultiCatalog(v); } } foreach (var v in setting.MultiFileArray()) { if (!String.IsNullOrEmpty(v)) { AssetBundleImport.ImportMultiFile(v); } } //写入映射关系 AssetBundleImport.WriteBundlePathNameMap(); AssetBundleExport.ExportAssetBundle(AssetBundleImport.m_BuildAssetMap); } public static void CompressAssets() { if (!BuildSetting.ProjectBuildSetting.is_decompress || AssetBundleExport.BuildTarget == BuildTarget.StandaloneWindows) { CopyAssetBundle(); return; } var builder = PdrCombine.ProjectRoot("Native/builder/unity_compress_asset.py"); PdrCMDHelper.ProcessPython($"{builder}"); } public static void CopyFolder() { foreach (var folder in BuildSetting.AssetsBuildSetting.CopyFolderArray()) { if (!String.IsNullOrEmpty(folder)) { var outpath = $"{Application.streamingAssetsPath}/{folder}"; PdrFileUtil.DeleteDirectory(outpath); PdrFileUtil.CopyDirectory($"{Application.dataPath}/{folder}", outpath); } } } public static void BuildAllAsset() { BuildLua(); BuildAssetBundle(); CopyAssetBundle(); } public static void CopyAssetBundle() { PdrFileUtil.DeleteDirectory(Application.streamingAssetsPath); PdrFileUtil.CopyDirectory($"{Application.dataPath}/temp", $"{Application.streamingAssetsPath}"); foreach (var t in PdrFileUtil.GetFilesName($"{Application.streamingAssetsPath}", ".manifest")) { PdrFileUtil.DeleteFile(t); } CopyFolder(); AssetDatabase.Refresh(); } } }