いちにちいちにちざっかん

一日一個思ったことを書きたかった成れの果て。

無圧縮のAssetBundle

急に技術のことを書き出すブログ。

今回はUnityのAssetBundleについて。
先日のUniteでやってた(らしい、自分は見ていない)AssetBundleに関してのこと。
まずはお話の前提条件

[Unity]AssetBundleの管理について
http://terasur.blog.fc2.com/blog-entry-449.html

記事内に「無圧縮のAssetBundle」と出てくるのだけれど
お話も聴いてないし、AssetBundleのことも未熟な私なので
何を指しているのかさっぱりだったのでそれについて調べたメモ。

そもそもAssetBundleはどうやってつくるのかっていうと
BuildPipeline.BuildAssetBundleを使って作る。
公式のサンプルだと
UnityEditorを拡張して選択したAssetをAssetBundleにする例が載っている。

この生成時にオプションが指定できる。そのうちの一つ
BuildAssetBundleOptions.UncompressedAssetBundle
を指定すると無圧縮でAssetBundleを生成する。

これ、どれだけ違うのかと言うと圧縮時は500kぐらいのものが
無圧縮だと8Mぐらいになる。ぜんぜん違う。

ただ無圧縮のもののみCreateFromFileが使えるようになるので
むしろCreateFromFileが使えるのは無圧縮タイプのみ。
それを使えばローカルに保存したAssetBundleを読み込むことが可能になり
150日で消えてしまうCacheを気にせず長期間保持できる(らしい)。
※Cacheもキャッシュといいながらストレージ上に保存するので
memcachedみたいなイメージだと面食らう


スマホアプリとして作る際にアプリの軽量化は必須事項なので
別口で初期DLさせるのはよくある話だけど
そこでDLさせたものが150日経つと再DLになるのは解せないので
やっぱり無圧縮をローカル保持が無難なんだろうなぁとか思ってしまうわけです。

かといってでかいファイルを初期DLさせるのはナンセンスなので
手前味噌圧縮などは考えないとダメそうです。
(ただZip系のライブラリは商用利用めんどくさいライセンスばかりですが…)

参考URL:http://docs-jp.unity3d.com/Documentation/Manual/abfaq.html