実際に使ってみる
前回はドキュメントを読んだだけなので今回は実際にインストールしてアセットバンドルをビルドしてみる。インストール
![]() |
|---|
| Unity のパッケージマネージャウインドウ |
Scriptable Build Pipeline を選びインストール。今回は Unity のバージョンは 2020.2.0a7、Scriptable Build Pipeline は 1.7.2 で試してみた。
SBP をてっとりばやく使ってみる
ドキュメントのサンプル にあるように、まずは既存の Unity 5 くらいからあるアセットバンドルをビルドする API、BuildPipeline.BuildAssetBundles と同じように使える CompatibilityBuildPipeline.BuildAssetBundles を使ってみる。アセットバンドルをビルドするエディタスクリプトの
BuildPipeline.BuildAssetBundlesを呼ぶ箇所var manifest = BuildPipeline.BuildAssetBundles(BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.iOS);
から以下のように名前空間 UnityEditor.Build.Pipeline にあるCompatibilityBuildPipeline に置きかえるだけ。var manifest = CompatibilityBuildPipeline.BuildAssetBundles(outputPath, BuildAssetBundleOptions.ChunkBasedCompression, BuildTarget.iOS);
変更したエディタスクリプトを実行すれば、これまでと同じように Unity のインスペクタ上でアセットバンドル名の設定にしたがってアセットバンドルがビルドできる。![]() |
|---|
| SDユニティちゃんにアセットバンドル名を指定 |
互換性
互換性については Upgrade Guideによるとアセットのロードはフルパスで指定する必要がある。また、AssetBundle Manifest は
CompatibilityAssetBundleManifest クラスで置き換えられる。AssetBundle Variants には現在のところ未対応の模様といったところ。
内部実装
さらに詳しく調査していくためにまずCompatibilityBuildPipeline の実装を見ていく。CompatibilityBuildPipeline.BuildAssetBundles は AssetBundleBuild[] が渡されない場合、内部でContentBuildInterface.GenerateAssetBundleBuilds を使いビルドするアセットバンドルの一覧を取得し BundleBuildContent を生成し ContentPipeline.BuildAssetBundles を呼びだす事でアセットバンドルのビルドが行なわれる。ちなみに
ContentPipeline.BuildAssetBundlesはビルドタスクのリストが渡されない場合は DefaultBuildTasks.Preset.AssetBundleCompatibleというプリセットのビルドタスクを使用する。ここまでのまとめ
CompatibilityBuildPipeline を使えば以前のビルド方法と同じようにアセットバンドルをビルドする事は可能(いくつかの変更があるが)だとわかった。しかし
CompatibilityBuildPipeline を使うだけでは SBP のメリットである独自のタスクを実装して使う事はできない。そのためタスクを実装してビルドパイプラインをコントロールするには
ContentPipeline を使う必要があるようだ。エディタスクリプト全文
参考
Unity Scriptable Build Pipeline
The Scriptable Build Pipeline (SBP) package allows you to control how Unity builds content. The package moves the previously C++-only build pipeline code to a public C# package with a pre-defined build flow for building AssetBundles. The pre-defined AssetBundle build flow reduces build time, improves incremental build processing, and provides greater flexibility than before.






