SceneをAssetBundle化する

github.com

 自己流SceneManagerの作成と同時にSceneのAssetBundle化に取り組みました。

AssetBundleからSceneを読み込みたい

 シーンもAssetBundleにすることが可能です。これによりアプリ本体に含まれるAssetを思いっきり減らすことができます。前回の自己流AssetBundleManagerはSceneを扱えなかったので、自己流SceneManagerの作成と同時に対応しました。

kema8351.hatenablog.com

ローカルモードとビルドを両立する

 問題となったのはローカルモードとビルドの両立です。ローカルモードとはAssetの変更をすぐに確認するためのモードです。変更のたびにAssetBundleをビルドするのは時間がかかるので、それを避けるためのモードを自己流AssetBundleManagerでは用意しました。

 この2つはBuildSettingで衝突します。ローカルモードを実現するためにはシーンをすべてBuildSettingに登録しておく必要があります。対して、ビルド時にはアセットバンドル化したシーンはBuildSettingから外す必要があります。BuildSettingに登録されているシーンはアプリに含まれてしまうからです。そのシーンからリンクされている画像や音声はすべてアプリに入ります。

 そこで両立させるために、通常時はすべてのシーンをBuildSettingに登録しておき、ビルド時だけアセットバンドル化したシーンを削除することにしました(※削除は必要ないことが判明。追記参照)。そのままですね。手動で実行するのは面倒くさいのでCIツールのサポートが必須です。

※2018-06-26 追記

ビルドスクリプトで含めるSceneを指定できるので削除する必要はありません。

docs.unity3d.com