LoginSignup
2
5

More than 5 years have passed since last update.

Unityシーン切り替えとファイル読み込み高速化手法その2

Last updated at Posted at 2018-12-22

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

ファイル構成

sample.png

AssetBundleDownloadフォルダはAssetBundleをアプリでダウンロードされた場合のファイル構成を確認するためのフォルダと思ってください。

このサンプルではHomeは1AssetBundle1ファイル、Iconは1AssetBundle複数ファイルとしました。

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5