using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor; using System.IO; public class UpdateAllSetting { [MenuItem("程序/设置资源包名/更新全部ABLabel(不包括lua)")] public static void SetAllAssetBundleName() { UpdateSpriteSetting.SetAllSpriteAssetBundleName(); UpdateUIWindowSetting.SetAllUIWindowAssetBundleName(); UpdateUIPrefabSetting.SetAllUIPrefabAssetBundleName(); UpdateEffectPrefabSetting.SetAllEffectPrefabAssetBundleName(); UpdateMobSetting.SetAllMobAssetBundleName(); UpdateShaderSetting.SetAllShaderAssetBundleName(); UpdateScriptableObjectsSetting.SetAllScriptableObjectAssetBundleName(); UpdateLevelSetting.SetAllLevelAssetBundleName(); UpdateAudioSetting.SetAllAudioAssetBundleName(); UpdateVideoSetting.SetAllVideoAssetBundleName(); UpdateBuiltInSetting.SetBuiltinAssetBundleName(); AssetDatabase.Refresh(); Debug.Log("资源包名全部更新完成!"); } } public class UpdateSpriteSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Sprite"; static string spriteRelativePath = "Assets/ResourcesOut/Sprite"; public static void SetRechargeSkin(int pattern) { var toDirectory = Application.dataPath + "/ResourcesOut/Sprite/Recharge"; var oldFiles = new DirectoryInfo(toDirectory).GetFiles("*.png", SearchOption.AllDirectories); foreach (var item in oldFiles) { File.Delete(item.FullName); } var fromDirectory = Application.dataPath + "/Editor/RechargeSprites/Pattern_" + pattern; FileExtersion.DirectoryCopy(fromDirectory, toDirectory); } [MenuItem("程序/设置资源包名/更新Sprite(All) AssetBundleName")] public static void SetAllSpriteAssetBundleName() { //改成设置atlas的assetBundleName var allFiles = new DirectoryInfo(rootPath).GetFiles("*.spriteatlasv2", SearchOption.AllDirectories); foreach (var file in allFiles) { var importerPath = spriteRelativePath + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "sprite/" + file.Name.Split(".")[0].ToLower(); // EditorUtility.SetDirty(importer); } allFiles = new DirectoryInfo(rootPath).GetFiles("*.png", SearchOption.AllDirectories); foreach (var file in allFiles) { var pathStringArray = file.DirectoryName.Split(Path.DirectorySeparatorChar); var importerPath = spriteRelativePath + Path.DirectorySeparatorChar + pathStringArray[pathStringArray.Length - 1] + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "sprite/" + pathStringArray[pathStringArray.Length - 1].ToLower(); // EditorUtility.SetDirty(importer); } Debug.Log("Sprite资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateUIWindowSetting { static string assetRelativePath = "Assets/ResourcesOut/UI"; [MenuItem("程序/设置资源包名/更新Window(All) AssetBundleName")] public static void SetAllUIWindowAssetBundleName() { var guids = AssetDatabase.FindAssets("t:prefab", new string[] { assetRelativePath }); foreach (var guid in guids) { var path = AssetDatabase.GUIDToAssetPath(guid); var importer = AssetImporter.GetAtPath(path); importer.assetBundleName = "ui"; // EditorUtility.SetDirty(importer); } Debug.Log("Window资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateUIPrefabSetting { static string prefabRootPath = Application.dataPath + "/ResourcesOut/UIComp"; static string prefabAssetRelativePath = "Assets/ResourcesOut/UIComp"; [MenuItem("程序/设置资源包名/更新Prefab(All) AssetBundleName")] public static void SetAllUIPrefabAssetBundleName() { var allFiles = new DirectoryInfo(prefabRootPath).GetFiles("*.prefab", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = prefabAssetRelativePath + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "uicomp"; // EditorUtility.SetDirty(importer); } Debug.Log("UIComp资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateEffectPrefabSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Effect/"; static string assetPath = "Assets/ResourcesOut/Effect/"; [MenuItem("程序/设置资源包名/更新Effect(All) AssetBundleName")] public static void SetAllEffectPrefabAssetBundleName() { var allFiles = new DirectoryInfo(rootPath).GetFiles("*.prefab", SearchOption.AllDirectories); foreach (var file in allFiles) { var pathStringArray = file.DirectoryName.Split(Path.DirectorySeparatorChar); var importerPath = assetPath + pathStringArray[pathStringArray.Length - 1] + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "effect/" + pathStringArray[pathStringArray.Length - 1].ToLower(); // EditorUtility.SetDirty(importer); } Debug.Log("Effect资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateMobSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Gmodels"; static string assetPath = "Assets/ResourcesOut/Gmodels"; static string createroleRoot = Application.dataPath + "/ResourcesOut/Gmodels/CreateRole"; static string createroleAssetPath = "Assets/ResourcesOut/Gmodels/CreateRole"; static string zsMaterialPath_Origin = Application.dataPath + "/Art/Role/A_Zs/Materials"; static string fsMaterialPath_Origin = Application.dataPath + "/Art/Role/A_Fs/Materials"; static string zsMaterialPath_OutPut = Application.dataPath + "/ResourcesOut/Gmodels/A_Zs/Materials"; static string fsMaterialPath_OutPut = Application.dataPath + "/ResourcesOut/Gmodels/A_Fs/Materials"; [MenuItem("程序/设置资源包名/更新Mob(All) AssetBundleName")] public static void SetAllMobAssetBundleName() { var allFiles = new DirectoryInfo(rootPath).GetFiles("*.prefab", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = assetPath + Path.DirectorySeparatorChar + file.Name; var extersion = Path.GetExtension(file.FullName); var importer = AssetImporter.GetAtPath(importerPath); var hostfix = file.Name.Replace("Prefab_Secondary", "") .Replace("Prefab_Weapon", "") .Replace("Prefab_Wing", "") .Replace("Prefab_Race", "") .Replace("Prefab_Horse", "") .Replace("_UI", "") .Replace(".prefab", "") .Replace("Prefab_Hand", ""); importer.assetBundleName = StringUtility.Contact("gmodels/prefab_race", hostfix); // EditorUtility.SetDirty(importer); } allFiles = new DirectoryInfo(createroleRoot).GetFiles("*.prefab", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = createroleAssetPath + Path.DirectorySeparatorChar + file.Name; var extersion = Path.GetExtension(file.FullName); var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "gmodels/createrole"; // EditorUtility.SetDirty(importer); } //var zsMaterialFiles = new DirectoryInfo(zsMaterialPath_Origin).GetFiles("*.mat", SearchOption.TopDirectoryOnly); //if (!Directory.Exists(zsMaterialPath_OutPut)) //{ // Directory.CreateDirectory(zsMaterialPath_OutPut); //} //foreach (var file in zsMaterialFiles) //{ // var fileName = Path.GetFileName(file.FullName); // File.Copy(file.FullName, StringUtility.Contact(zsMaterialPath_OutPut, "/", fileName), true); //} //var fsMaterialFiles = new DirectoryInfo(fsMaterialPath_Origin).GetFiles("*.mat", SearchOption.TopDirectoryOnly); //if (!Directory.Exists(fsMaterialPath_OutPut)) //{ // Directory.CreateDirectory(fsMaterialPath_OutPut); //} //foreach (var file in fsMaterialFiles) //{ // var fileName = Path.GetFileName(file.FullName); // File.Copy(file.FullName, StringUtility.Contact(fsMaterialPath_OutPut, "/", fileName), true); //} var zsMaterialPathOutFiles = new DirectoryInfo(zsMaterialPath_OutPut).GetFiles("*.mat", SearchOption.TopDirectoryOnly); foreach (var _file in zsMaterialPathOutFiles) { var _fileName = Path.GetFileName(_file.FullName); var _importerPath = assetPath + "/A_Zs/Materials/" + _file.Name; var _importer = AssetImporter.GetAtPath(_importerPath); if (_file.Name.StartsWith("A_Zs_Sz")) { string _abName = Path.GetFileNameWithoutExtension(_file.Name).Replace("_Dm", ""); _importer.assetBundleName = "gmodels/prefab_race_" + _abName; } else { string _abName = Path.GetFileNameWithoutExtension(_file.Name).Replace("_02", "").Replace("_Dm", "").Replace("_Dm_02", ""); _importer.assetBundleName = "gmodels/prefab_race_" + _abName; } // EditorUtility.SetDirty(_importer); } var fsMaterialPathOutFiles = new DirectoryInfo(fsMaterialPath_OutPut).GetFiles("*.mat", SearchOption.TopDirectoryOnly); foreach (var _file in fsMaterialPathOutFiles) { var _fileName = Path.GetFileName(_file.FullName); var _importerPath = assetPath + "/A_Fs/Materials/" + _file.Name; var _importer = AssetImporter.GetAtPath(_importerPath); if (_file.Name.StartsWith("A_Fs_Sz")) { string _abName = Path.GetFileNameWithoutExtension(_file.Name).Replace("_Dm", ""); _importer.assetBundleName = "gmodels/prefab_race_" + _abName; } else { string _abName = Path.GetFileNameWithoutExtension(_file.Name).Replace("_02", "").Replace("_Dm", "").Replace("_Dm_02", ""); _importer.assetBundleName = "gmodels/prefab_race_" + _abName; } // EditorUtility.SetDirty(_importer); } // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); //foreach (var file in zsMaterialFiles) //{ // var fileName = Path.GetFileName(file.FullName); // var importerPath = assetPath + "/A_Zs/Materials/" + file.Name; // var importer = AssetImporter.GetAtPath(importerPath); // importer.assetBundleName = "gmodels/a_zs_materials"; // EditorUtility.SetDirty(importer); //} //foreach (var file in fsMaterialFiles) //{ // var fileName = Path.GetFileName(file.FullName); // var importerPath = assetPath + "/A_Fs/Materials/" + file.Name; // var importer = AssetImporter.GetAtPath(importerPath); // importer.assetBundleName = "gmodels/a_fs_materials"; // EditorUtility.SetDirty(importer); //} Debug.Log("Gmodels资源包名更新完成!"); //AssetDatabase.SaveAssets(); //AssetDatabase.Refresh(); } } public class UpdateShaderSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Shader"; static string assetPath = "Assets/ResourcesOut/Shader"; [MenuItem("程序/设置资源包名/更新Shader(All) AssetBundleName")] public static void SetAllShaderAssetBundleName() { var allFiles = new DirectoryInfo(rootPath).GetFiles("*.shader", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = assetPath + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "graphic/shader"; // EditorUtility.SetDirty(importer); } Debug.Log("Shader资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateScriptableObjectsSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Refdata/ScriptableObject/"; static string assetPath = "Assets/ResourcesOut/Refdata/ScriptableObject/"; static string[] relativePaths = new string[] { "SoTreasure3D", "SoTreasureMeridian", "SoActor", "SoDeadFly", "SoBodyControl", "SoCameraSFX", "SoFlyObject", "SoSkill", "SoSweepHit", "SoGhostShadow", "SoNewBieGuide", "SoMapObjectGenerate","SoDemonDungeon", "SoHazyMapNpc","SoProcessNode"}; [MenuItem("程序/设置资源包名/更新ScriptableObject(All) AssetBundleName")] public static void SetAllScriptableObjectAssetBundleName() { for (int i = 0; i < relativePaths.Length; i++) { var relativePath = relativePaths[i]; var allFiles = new DirectoryInfo(rootPath + relativePath).GetFiles("*.asset", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = assetPath + relativePath + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "config/scriptableobjects"; // EditorUtility.SetDirty(importer); } } Debug.Log("ScriptableObject资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateLevelSetting { static string exportMapsPath = Application.dataPath + "/Editor/Config/ExportMaps.txt"; static string rootPath = Application.dataPath + "/Art/Maps/Scenes"; static string assetPath = "Assets/Art/Maps/Scenes"; static HashSet exportMaps;//去除的地图列表 public static void SetCreateRoleLevel(string pattern) { var root = Application.dataPath + "/Art/Maps/Scenes/Map_CreateRole"; var from = Application.dataPath + "/Art/Maps/Scenes/Map_CreateRole/" + "CreateRole_" + pattern + ".unity"; var to = Application.dataPath + "/Art/Maps/Scenes/" + "CreateRole_001.unity"; if (File.Exists(from)) { if (File.Exists(to)) { File.Delete(to); } File.Copy(from, to); } } [MenuItem("程序/设置资源包名/更新Level(All) AssetBundleName")] public static void SetAllLevelAssetBundleName() { ReadExportConfig(); var allFiles = new DirectoryInfo(rootPath).GetFiles("*.unity", SearchOption.TopDirectoryOnly); foreach (var file in allFiles) { var importerPath = assetPath + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); var name = Path.GetFileNameWithoutExtension(file.FullName); if (exportMaps.Contains(name)) //判断这个地图是否被排除,被排除不打包 importer.assetBundleName = ""; else importer.assetBundleName = "maps/" + name.ToLower(); // EditorUtility.SetDirty(importer); } var createRoleAssets = AssetDatabase.FindAssets("t:prefab", new string[] { "Assets/ResourcesOut/Scene/CreateRole" }); foreach (var item in createRoleAssets) { var importer = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(item)); importer.assetBundleName = "maps/createrole"; // EditorUtility.SetDirty(importer); } var textures = AssetDatabase.FindAssets("t:Texture2D", new string[] { "Assets/ResourcesOut/Scene/Textures" }); foreach (var item in textures) { var importer = AssetImporter.GetAtPath(AssetDatabase.GUIDToAssetPath(item)); importer.assetBundleName = "maps/textures"; // EditorUtility.SetDirty(importer); } exportMaps?.Clear(); exportMaps = null; Debug.Log("map资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } //读取排除地图的配置 private static void ReadExportConfig() { if (File.Exists(exportMapsPath)) { var lines = File.ReadAllLines(exportMapsPath); exportMaps = new HashSet(lines); } } } public class UpdateAudioSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Audio/"; static string assetPath = "Assets/ResourcesOut/Audio/"; [MenuItem("程序/设置资源包名/更新Audio(All) AssetBundleName")] public static void SetAllAudioAssetBundleName() { var allFiles = new DirectoryInfo(rootPath).GetFiles("*.wav", SearchOption.AllDirectories); foreach (var file in allFiles) { var pathStringArray = file.DirectoryName.Split(Path.DirectorySeparatorChar); var importerPath = assetPath + pathStringArray[pathStringArray.Length - 1] + Path.DirectorySeparatorChar + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "audio/" + pathStringArray[pathStringArray.Length - 1].ToLower(); // EditorUtility.SetDirty(importer); } Debug.Log("Audio资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateVideoSetting { static string rootPath = Application.dataPath + "/ResourcesOut/Video/"; static string assetPath = "Assets/ResourcesOut/Video/"; [MenuItem("程序/设置资源包名/更新Video(All) AssetBundleName")] public static void SetAllVideoAssetBundleName() { if (!Directory.Exists(rootPath)) return; var allFiles = new DirectoryInfo(rootPath).GetFiles("*.mp4", SearchOption.AllDirectories); foreach (var file in allFiles) { var importerPath = assetPath + file.Name; var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "video/"+Path.GetFileNameWithoutExtension(file.FullName); // EditorUtility.SetDirty(importer); } Debug.Log("Video资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } } public class UpdateBuiltInSetting { static string rootPath = Application.dataPath + "/ResourcesOut/BuiltIn/"; static string assetPath = "Assets/ResourcesOut/BuiltIn/"; [MenuItem("程序/设置资源包名/更新BuiltIn(All) AssetBundleName")] public static void SetBuiltinAssetBundleName() { var allFiles = new List(); FileExtersion.GetAllDirectoryFileInfos(rootPath, allFiles); var amendRootPath = rootPath.Replace("\\", "/"); foreach (var file in allFiles) { var extension = Path.GetExtension(file.FullName); if (extension == ".meta") { continue; } if (extension == ".DS_Store") { continue; } var directoryName = file.DirectoryName.Replace("\\", "/"); var relativeDirectory = directoryName.Replace(amendRootPath, ""); var importerPath = assetPath + relativeDirectory + Path.DirectorySeparatorChar + file.Name; if (file.Name != ".DS_Store") { var importer = AssetImporter.GetAtPath(importerPath); importer.assetBundleName = "builtin/" + relativeDirectory.ToLower(); // EditorUtility.SetDirty(importer); } } Debug.Log("BuiltIn资源包名更新完成!"); // AssetDatabase.SaveAssets(); // AssetDatabase.Refresh(); } }