ラベル SBP の投稿を表示しています。 すべての投稿を表示
ラベル SBP の投稿を表示しています。 すべての投稿を表示

2020年5月2日土曜日

Scriptable Build Pipeline と戯れてみる #2

実際に使ってみる

前回はドキュメントを読んだだけなので今回は実際にインストールしてアセットバンドルをビルドしてみる。

インストール

Unity のパッケージマネージャウインドウ
Unity のパッケージマネージャウインドウ
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にアセットバンドル名を指定
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.

2020年4月19日日曜日

Scriptable Build Pipeline と戯れてみる #1

はじめに

AssetBundle のビルド時にいろいろカスタマイズするかもしれないので、Scriptable Build Pipeline について調べてみる。
まずは参考になりそうな記事を読んでみる。

Unity 公式ドキュメント

Unity Scriptable Build Pipeline
Scriptable Build Pipeline - 2018.3 Getting Started Guide

Unity のパッケージマネージャから見れる公式のドキュメント。
Google Drive にあるドキュメントも大体同じ内容。
基本的な使用方法と既存のAssetBundleのビルドについての差異などが記述されている。

その他

【Unity】はじめてのScriptable Build Piepline
はじめてのScriptable Build Pipeline

テラシュールブログさんの SBP についてのブログ記事とスライド。
SBP の概要とカスタムして使用する方法について書いてある。

Deep-Dive into Scriptable Build Pipeline

Gotanda.unity で発表されたらしい DeNA の方による SBP のアーキテクチャと、より踏み込んだ使用例(アセットの循環参照の検出など)。
プレゼンの動画とスライドがある。

Adressableのおいしいとこだけ使いたい?Scriptable Build Piplineがあるじゃない

SBP に用意されているタスクのプリセットを使用してアセットバンドルに余分に含まれてしまうビルトインシェーダをビルドから除外する方法が紹介している記事