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,个人爱好。