【Unity】AssetBundleからもビルドからも参照されるAssetをどう扱うかという問題

AssetBundleからも、ビルドからも参照されるようなAssetをどう扱うかという問題への自分なりへの考え方です。

Unity2018.2

問題点

まずSpriteを使ってButtonを作ります。
これを使いまわせるようにPrefabにします。

f:id:halya_11:20181230183919p:plain

ここで、このシーンはダウンロードを挟まずに使いたいため、ビルドに含めるものとします。
しかし、ボタンのPrefabは他のAssetBundleからも使いたいので、AssetBundle化します。

このような場合、ボタンのSpriteはもちろんビルドに含まれます。
しかし同時にAssetBundleにも含まれてしまうようです。

f:id:halya_11:20181230184303p:plain

このような場合にはどうするべきでしょうか?

方針1 : StreamingAssetsに入れる

AssetBundleはStreamingAssetsに入れればビルドに含めて読み込めるようです。

unity3d.com

これを利用して、前節でビルドに含めていたシーンをビルドに含めずAssetBundle化して、
StreamingAssets経由で読み込むという手がありそうです。

ただこの場合StreamingAssetsに含めるAssetBundleをプラットフォームごとに分けたりする対応は必要になってきます。

方針2 : 敢えて重複させてしまう

重複するアセットが少なそうであれば、気持ち悪いですが重複させてしまうのも手なのかなと思います。

テクスチャとか容量が大きいものが多かったりすると使えない手ではありますが、
リソースの設計だけミスらなければ対応自体は特に何もしなくていいのでお手軽です。

参考

unity3d.com