AssetBundle
AssetBundle自体の説明は他のサイトでも多く文献があるので割愛する
ここではAssetBundleのファイルの格納についての話をする
AssetBundleは複数のファイルを格納し、無圧縮、LZMA、LZ4の3種類の圧縮フォーマットを使えるものである。
AssetBundleのファイルの格納は2タイプに分かれる(とあえて考える)
- 1つのAssetBundleに1ファイル格納
- 1つのAssetBundleに複数ファイル格納
1ファイル格納
更新頻度が高い種類のものはこちらに該当する
例えばADVの背景画像は、運用するアプリであれば更新が多く発生するため、複数ファイルでまとめてしまった場合、ユーザーのDL負荷が高くなってしまう
圧縮はLZMAまたはLZ4を推奨する
複数ファイル格納
更新頻度が低くてまとめたいものはこちらに該当する
圧縮はLZ4を推奨する(LZMAは絶対ダメ)
AssetBundle生成時のオプション
AssetBundleを作る時のオプションに何も指定しないとLZMAとなる
BuildAssetBundleOptions.ChunkBasedCompressionを指定するとLZ4となる
BuildAssetBundleOptions.UncompressedAssetBundleを指定すると無圧縮となる
AssetBundleGraphTool
AssetBundleの生成は個人的にはAssetBundleGraphToolを推奨する
https://bitbucket.org/Unity-Technologies/assetbundlegraphtool
使い方は後日書く(予定)
開発中のファイルアクセス
Resourcesはエディタ、実機で共通の使い方だから問題ないが、AssetBundleはリソースを更新するたびにAssetBundle化するのは効率が悪い。
開発中はファイルを置いたところから直接読み込み、実機ではコードを一切変更しないでAssetBundleから読み込むようにしたい。
そこでResources、AssetBundle、開発時のディレクトリどこであっても汎用的に使える汎用Loaderを用意して、ゲーム内ではアクセス方法を気にしないようにする。
サンプル
Github
C#7の機能を使っているので、Unity2018.3以降でないとエラーになります。
https://github.com/artisan-sawasaka/AssetLoader
ファイル構成
AssetBundleDownloadフォルダはAssetBundleをアプリでダウンロードされた場合のファイル構成を確認するためのフォルダと思ってください。
このサンプルではHomeは1AssetBundle1ファイル、Iconは1AssetBundle複数ファイルとしました。