static void resetAssetBundle()
{
string[] names = AssetDatabase.GetAllAssetBundleNames();
foreach (string name in names)
{
string[] paths = AssetDatabase.GetAssetPathsFromAssetBundle(name);
foreach (string path in paths)
{
AssetImporter imp = AssetImporter.GetAtPath(path);
imp.assetBundleName = null;
}
AssetDatabase.RemoveAssetBundleName(name, true);
}
}
static void SetBundleNames(string filter,string prefabDir)
{
string dirName;
string[] prefabs;
dirName = Path.GetFileName(prefabDir);
prefabs = AssetDatabase.FindAssets(filter, new string[] { prefabDir });
foreach (string prefab in prefabs)
{
string path = AssetDatabase.GUIDToAssetPath(prefab);
AssetImporter importer = AssetImporter.GetAtPath(path);
string name = path.Substring(prefabDir.Length + 1);
name = Path.Combine(Path.GetDirectoryName(name) , Path.GetFileNameWithoutExtension(name));
//Debug.Log(name);
importer.assetBundleName = dirName.ToLower() + "/" + name;// dirName.ToLower() + "/" + System.IO.Path.GetFileNameWithoutExtension(path);
}
}
static void SetPrefabsBundleNames(string prefabDir)
{
SetBundleNames("t:prefab", prefabDir);
}
[MenuItem("Tools/打包资源")]
public static void BuildResource()
{
string assetBundleDirectory = "Assets/AssetBundles/Win64";
if (!Directory.Exists(assetBundleDirectory))
{
Directory.CreateDirectory(assetBundleDirectory);
}
resetAssetBundle();
SetBundleNames("t:Texture2D", "Assets/Resources/fightwindow");
SetPrefabsBundleNames("Assets/Resources/ui");
BuildPipeline.BuildAssetBundles(assetBundleDirectory, BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows64);
}
}