Unity 2017.2よりAssetBundle.LoadFromStreamとAssetBundle.LoadFromStreamAsyncが追加されました。
これで暗号化したAssetBundleをStreamから読み込んだり、独自圧縮したAssetBundleを読み込んだり…?うーん、出来るのかな
サンプルコード
下のようなコードでAssetBundleが取得出来ます。
まぁコードに関してはスクリプトリファレンスの方が多分ちゃんとしてます。
Unity - Scripting API: AssetBundle.LoadFromStream
Unity - Scripting API: AssetBundle.LoadFromStreamAsync
色々な制限が
おお便利そう!と思いましたが、色々と制限が…
- AssetBundleのデータはStreamの位置が0である必要がある
- AssetBundleの値を読むときはSeekの位置が0になる
- 他のプロセスが位置を変更しない前提
- stream.CanReadはTrueを返す
- stream.CanSeekはTrueを返す
- Streamは別スレッドからアクセス可能であること
ただ、Streamを自作すれば結構色々と出来ます。ファイルを暗号化してみた結果がこちら
そして未来へ…
それは兎も角、AssetBundleの今後の予定されてる破壊的変更の前には、この程度のことは無いに等しい…
詳しくは、見れば分かるさ…見ればな…
ちなみに、複数のCacheフォルダを持ったり、指定Cacheを削除したりは既に出来ます。
関連
https://forum.unity3d.com/threads/preview-of-2017-2-features.481949/