【Android】AssetBundle を Application.persistentDataPath 等でアクセス可能なローカルパスから読み込みたい

348 views
Skip to first unread message

h.tsuch...@gmail.com

unread,
Mar 7, 2018, 3:47:47 AM3/7/18
to 宴ユーザーグループ
AdvEngineStarter の ServerUrl file://~ を指定してローカルから
AssetBundle を読み込めるように対応して頂けると大変嬉しいです。

どうやら現状は ServerUrl  に対して ToCacheClearUrl(string url) メソッドで
URLにタイムスタンプ引数が付与されるため file://~ を使用した際にエラーとなってしまうようです。

もしくは上記を実現する手段がございましたらご教示頂けますと幸いです。

必要な理由としましては
提携先から提供されたライブラリを通して
管理外のサーバーからセキュアにAssetBundleをDLし
一旦ローカルに置く必要があるためです。

お忙しい所恐縮ですが、何卒宜しくお願い致します。

マッドネスラボ

unread,
Mar 7, 2018, 3:52:55 AM3/7/18
to 宴ユーザーグループ
こちらの方法で可能です。

h.tsuch...@gmail.com

unread,
Mar 7, 2018, 4:10:08 AM3/7/18
to 宴ユーザーグループ
早速のご回答ありがとうございます。
なるほど、現状は自前である程度プログラムを用意する必要があるということですね。

大変助かりました有難うございます。

マッドネスラボ

unread,
Mar 7, 2018, 4:12:58 AM3/7/18
to utag...@googlegroups.com
追記
タイムスタンプだとローカルでロードできないというのは、おそらくUnityのバグです。
というのも、タイムスタンプつきでローカルロードしても昔のUnityだと動作していたからです。
Unity側に報告済みではあるのですが、最新版のUnityでもバグが再現する割にClosed扱いになってるので、修正されてるのか仕様変更なのかわからないです。
https://issuetracker.unity3d.com/issues/www-fails-loading-asset-from-streamingassets-if-there-is-a-query-string-in-the-url


マッドネスラボ

unread,
Mar 7, 2018, 4:25:16 AM3/7/18
to 宴ユーザーグループ
すみません。さらに追記です。

先ほどのリンクの
「自作のファイルマネージャーと宴のファイルマネージャーを組み合わせる」のうち
>独自に作成したアセットバンドルリストを登録する
のほうですと結局タイムスタンプが追加されてしまうので、

>ロードやアンロードの処理をカスタムする
こちらのやり方じゃないとダメだと思います。
こちらのほうはロードの仕組みは宴の仕組みを使わなくなります。
逆に言うと自作しないといけませんので、もし大変なようでしたら
ToCacheClearUrl() 以下の処理をコメントアウトするなりしてタイムスタンプが追加されないようにするのが一番はやいかと思います。
タイムスタンプを無視するフラグなどを追加しようかとも思ったのですが、本来はUnityのバグと思われるので、こちらで対応するべきかちょっと決めかねています。






h.tsuch...@gmail.com

unread,
Mar 7, 2018, 4:47:15 AM3/7/18
to 宴ユーザーグループ
非常に詳しく補足して頂き有難うございます。
そうですね私もUnity側で早く修正されるのがベストだと思います。

私自身も以前にADVエンジンを開発した際はUnityの制限で
いくつも妥協をした経験があるので(暗号化音声ファイルの扱いなど)
お気持ちがよく分かります。

頂いた情報で十分に解決策が得られましたので
プロジェクトと相談して進めたいと思います。

誠に有難うございました。
Reply all
Reply to author
Forward
0 new messages