実際に使ってみる
前回はドキュメントを読んだだけなので今回は実際にインストールしてアセットバンドルをビルドしてみる。インストール
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.