unity 3 dノートのコードによる一括設定AssetBundle名
2996 ワード
実際のプロジェクトでは、数千以上のリソースをパッケージ化する必要がある場合があります.名前を設定するには、接尾辞を設定するのは少し手間がかかります.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
public class BuilderAssetsBunlds
{
// 、、、、、、、、、、、、、、、、、、、、、、
[MenuItem("Tools/ ")]
public static void BundlerAssets()
{
// Debug.LogError(" Assets");
BuildPipeline.BuildAssetBundles(GetOutAssetsDirecotion(), BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
}
public static string GetOutAssetsDirecotion()
{
string assetBundleDirectory = Application.streamingAssetsPath;
if (!Directory.Exists(assetBundleDirectory))
{
Directory.CreateDirectory(assetBundleDirectory);
}
return assetBundleDirectory;
}
// /////////////////////////////
[MenuItem("Tools/ Assetbundle ")]
public static void SetAssetBundellabls()
{
CheckFileSystemInfo();
}
public static void CheckFileSystemInfo() //
{
AssetDatabase.RemoveUnusedAssetBundleNames(); // assetbundlename
Object obj = Selection.activeObject; // Selection.activeObject
string path = AssetDatabase.GetAssetPath(obj);//
CoutineCheck(path);
}
public static void CheckFileOrDirectory(FileSystemInfo fileSystemInfo, string path) //
{
FileInfo fileInfo = fileSystemInfo as FileInfo;
if (fileInfo != null)
{
SetBundleName(path);
}
else
{
CoutineCheck(path);
}
}
public static void CoutineCheck(string path) // ,
{
DirectoryInfo directory = new DirectoryInfo(@path);
FileSystemInfo[] fileSystemInfos = directory.GetFileSystemInfos();
foreach (var item in fileSystemInfos)
{
// Debug.Log(item);
int idx = item.ToString().LastIndexOf(@"\");// '\'
string name = item.ToString().Substring(idx + 1);//
if (!name.Contains(".meta"))
{
CheckFileOrDirectory(item, path + "/" + name); //item ,
}
}
}
public static void SetBundleName(string path) // assetbundle
{
var importer = AssetImporter.GetAtPath(path);
string[] strs = path.Split('.');
string[] dictors = strs[0].Split('/');
string name = "";
for (int i = 1; i < dictors.Length; i++)
{
if (i < dictors.Length - 1)
{
name += dictors[i] + "/";
}
else
{
name += dictors[i];
}
}
if (importer != null)
{
importer.assetBundleVariant = "bytes";
importer.assetBundleName = name;
}
else
Debug.Log("importer ");
}
}