Open5
AB作成
いっつもABのビルド方法忘れて調べるのでメモ
exportとname付け用のscript用意
namespace Sample
{
public static class AssetBundleBuilder
{
[MenuItem("Window/AB/Build")]
public static void Build()
{
var outputDir = "AssetBundleData";
if (!Directory.Exists(outputDir))
{
Directory.CreateDirectory(outputDir);
}
BuildPipeline.BuildAssetBundles(
outputDir,
BuildAssetBundleOptions.None,
BuildTarget.StandaloneOSX
);
}
[MenuItem("Window/AB/ApplyName")]
public static void ApplyName()
{
foreach (var o in Selection.objects)
{
var path = AssetDatabase.GetAssetPath(o.GetInstanceID());
var name = Path.GetFileNameWithoutExtension(path);
AssetImporter importer = AssetImporter.GetAtPath(path);
importer.assetBundleName = name;
importer.SaveAndReimport();
}
}
}
}
出力
$ tree AssetBundleData
AssetBundleData
├── AssetBundleData
├── AssetBundleData.manifest
├── pentagonal
├── pentagonal.manifest
├── rectangle
├── rectangle.manifest
├── star
└── star.manifest
0 directories, 28 files
AssetBundleManifest DL
var url = "http://localhost:4567/AssetBundleData";
var manifestRequest = UnityWebRequestAssetBundle.GetAssetBundle(url, 0);
await manifestRequest.SendWebRequest();
var manifestBundle = DownloadHandlerAssetBundle.GetContent(manifestRequest);
var manifest = manifestBundle.LoadAsset<AssetBundleManifest>("AssetBundleManifest");
簡易server
#!/usr/bin/env ruby
require 'sinatra'
get '/:name' do |name|
File.read(File.join("AssetBundleData", name))
end