using UnityEditor; using System.IO; public class TipDataAssetBundleName { [MenuItem("Resource/2.Tip AssetBundleName")] public static void TipAssetBundleName() { DirectoryInfo directoryInfo = new DirectoryInfo(EditorConstConfig.TipDataPath); if (!directoryInfo.Exists) { UnityEngine.Debug.LogError("Tip DIR not exists"); return; } string[] dirs = Directory.GetDirectories(EditorConstConfig.TipDataPath); foreach (string dir in dirs) { string name = Path.GetFileName(dir); TipAssetBundleName(dir, name); } AssetDatabase.Refresh(); } private static void TipAssetBundleName(string directory, string name) { if (name.IndexOf("/") == -1) { //再深一层 string[] dirs = Directory.GetDirectories(directory); foreach (string dir in dirs) { name = name + "/" + Path.GetFileName(dir); TipAssetBundleName(dir, name); } } else { string[] files = Directory.GetFiles(directory); foreach (string file in files) { if (file.EndsWith(".meta")) continue; string path = file.Substring(file.IndexOf("Assets")).Replace('\\','/'); AssetImporter importer = AssetImporter.GetAtPath(path); importer.assetBundleName = name; importer.assetBundleVariant = "assetbundle"; } } } }
这里的菜单是2,其实在我写的资源管理中还有一步就是将资源复制到专门用来标志Assetbundle名字的单独文件夹中,然后调用这个会遍历这个文件夹,按照文件夹的名字来给资源添加AssetBundle名字,第一层目录是资源的大分类,第二层目录才是装资源的,例如Lua/login文件夹,login下的资源文件的AssetBundle名字就是lua/login。Lua文件夹下不保存任何资源,只做分类,这只是规定而已,也可以标志为lua,个人爱好。