using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class AutoSetLabel
{
[MenuItem("Tools/SetAssetBundleLabel")]
public static void SetABLabel()
{
Debug.Log( Application.dataPath + "/AB_Res");
DirectoryInfo rooDirect = new DirectoryInfo(Application.dataPath + "/AB_Res");
//移除以前的AB標記
foreach (FileSystemInfo curFile in rooDirect.GetFileSystemInfos())
{
RemoveABLabel(curFile);
}
AssetDatabase.RemoveUnusedAssetBundleNames();
//設置AB標記
foreach (FileSystemInfo curFile in rooDirect.GetFileSystemInfos())
{
SetABLabel(curFile);
}
Debug.Log("設置AB標記完成");
AssetDatabase.Refresh();
}
/// <summary>
/// 設置AB文件標記
/// </summary>
/// <param name="curFile">文件或者文件夾</param>
private static void SetABLabel(FileSystemInfo curFile)
{
//獲取當前目錄所有文件系統信息 根據後綴區分文件和文件夾
if (curFile.Extension != "")
{
if (curFile.Extension != ".meta")
{
//win路徑轉化爲unity
string fullname = curFile.FullName.Replace("\\","/");
string abname = GetABName(fullname);
////開始設置包名
AssetImporter assetImporter = AssetImporter.GetAtPath(fullname.Substring(fullname.IndexOf("Assets")));//相對於工程目錄下的
assetImporter.assetBundleName = abname;//標記名名
if (curFile.Extension == ".untiy")
assetImporter.assetBundleVariant = "untiy3d";
else//這部分也可以排除配置文件
assetImporter.assetBundleVariant = "ab";
}
}
else
{
DirectoryInfo directoryInfo = curFile as DirectoryInfo;
//獲取當前目錄所有文件系統信息 根據後綴區分文件和文件夾
foreach (FileSystemInfo tmpFile in directoryInfo.GetFileSystemInfos())
{
SetABLabel(tmpFile);
}
}
}
/// <summary>
/// 移除所有AB標記
/// </summary>
/// <param name="curFile">文件或者文件夾</param>
private static void RemoveABLabel(FileSystemInfo curFile)
{
string fullname = curFile.FullName.Replace("\\", "/");
AssetImporter assetImporter = AssetImporter.GetAtPath(fullname.Substring(fullname.IndexOf("Assets")));//相對於工程目錄下的
if (curFile.Extension != ".meta")
assetImporter.assetBundleName = "";//包名
if (curFile.Extension == "")//是文件的話
{
DirectoryInfo directoryInfo = curFile as DirectoryInfo;
//獲取當前目錄所有文件系統信息 根據後綴區分文件和文件夾
foreach (FileSystemInfo tmpFile in directoryInfo.GetFileSystemInfos())
{
RemoveABLabel(tmpFile);
}
}
}
/// <summary>
/// 獲取AB標記名
/// </summary>
/// <param name="filefullPath">文件全路徑()</param>
/// <returns></returns>
private static string GetABName(string filefullPath)
{
string fullname = filefullPath.Replace("\\", "/");
string abname = fullname.Substring(fullname.IndexOf("Assets") + 7, fullname.LastIndexOf("/") - fullname.IndexOf("Assets") - 7);
return abname;
}
}
--若是對您有所幫助,世界便多了一份你我的溫暖
--您的支持將是我的動力,手有餘糧的話,一點點讚賞我將開心不已(一毛錢也是極好的)