SceneをAssetBundle化する
自己流SceneManagerの作成と同時にSceneのAssetBundle化に取り組みました。
AssetBundleからSceneを読み込みたい
シーンもAssetBundleにすることが可能です。これによりアプリ本体に含まれるAssetを思いっきり減らすことができます。前回の自己流AssetBundleManagerはSceneを扱えなかったので、自己流SceneManagerの作成と同時に対応しました。
ローカルモードとビルドを両立する
問題となったのはローカルモードとビルドの両立です。ローカルモードとはAssetの変更をすぐに確認するためのモードです。変更のたびにAssetBundleをビルドするのは時間がかかるので、それを避けるためのモードを自己流AssetBundleManagerでは用意しました。
この2つはBuildSettingで衝突します。ローカルモードを実現するためにはシーンをすべてBuildSettingに登録しておく必要があります。対して、ビルド時にはアセットバンドル化したシーンはBuildSettingから外す必要があります。BuildSettingに登録されているシーンはアプリに含まれてしまうからです。そのシーンからリンクされている画像や音声はすべてアプリに入ります。
そこで両立させるために、通常時はすべてのシーンをBuildSettingに登録しておき、ビルド時だけアセットバンドル化したシーンを削除することにしました(※削除は必要ないことが判明。追記参照)。そのままですね。手動で実行するのは面倒くさいのでCIツールのサポートが必須です。
※2018-06-26 追記
ビルドスクリプトで含めるSceneを指定できるので削除する必要はありません。