url | キャッシュされていない場合にアセットバンドルをダウンロードするための URL。'%' は避けなければいけません。 |
version | アセットバンドルのバージョン。以前に同じ version パラメーターでダウンロードを行っている場合、キャッシュされたデータをロードします。アプリケーションによってインクリメントされたバージョンをリクエストすることによって強制的に url から最新のアセットバンドルをキャッシングすることができます。 |
crc | 非圧縮コンテンツの CRC-32 チェックサム。もしパラメーターが 0 出ない場合はコンテンツをロードする前にチェックサムの比較が行われ一致しない場合はエラーを返します。これはキャッシュされたデータのユーザーによる改竄や改悪、データの破損を避けるために利用されます。CRC が一致しない場合は Unity は再度ダウンロードを試みます。そして CRC がサーバー側で一致しない場合はエラーを返します。今の CRC 値がアセットバンドルに一致しているかはエラー内容から判断することができます。 |
WWW アセットバンドルのロード/ダウンロードが完了したときにデータにアクセスするための WWW インスタンスを返します。
キャッシュからバージョンで指定されたアセットバンドルをロードします。もしアセットバンドルがキャッシュされていない場合は自動的にダウンロードされローカルストレージから復旧できるためにキャッシュに保存されます。
LoadFromCacheOrDownload() はキャッシングを使用するために "new WWW (url)" の代わりに使用するようにしてください。
キャッシュされた AssetBundle は、ファイル名とバージョン番号によって単独に一意的に認証されます。url
のすべてのドメインとパスの情報は Cashing に無視されます。キャッシュされた AssetBundle は完全な URL の代わりにファイル名で認証されるため、アセットバンドルがダウンロードされたアセットからいつでもディレクトリを変更できます。新しいバージョンのゲームを送り出す際に、ファイルがブラウザや CDN によって不正確にキャッシュされないようにするために、この方法は有効です。共有キャッシュを使用する Web Player アプリケーションの場合、アプリケーション間で名前の混乱が起きないように、完全一致の名前がついた複数の AssetBundle には、Caching によって一意の認証情報が加えられます。
もし、キャッシュフォルダーに追加できるファイル領域がない場合はキャッシュしようとしているファイルの領域が空くまで LoadFromCacheOrDownload で追加されたもっとも使用頻度の低いアセットバンドルから削除していきます。もし利用可能なファイル領域を確保できない場合(キャッシュされているアセットバンドルをすべて使用している場合や、HDD の要領がいっぱいな場合)は LoadFromCacheOrDownload は "new WWW()" の呼び出しと同じようにメモリ上に展開しストリーミングします。
キャッシュされるデータは、Caching.compressionEnabled を有効にすることにより圧縮形式で保存することができます。
この関数は AssetBundle のアクセスのみに使用することができます。それ以外のタイプやコンテンツはキャッシュできません。
この関数に渡される CRC は、Asset Bundle の実装時間中に計算されます。BuildPipeline.BuildAssetBundle を参照してください。
Note: URL は '%' を避けなければいけません。
function Start () { var www = WWW.LoadFromCacheOrDownload ("http://myserver.com/myassetBundle.unity3d", 5);
yield www;
if (!String.IsNullOrEmpty(www.error)) { Debug.Log (www.error); return; } var myLoadedAssetBundle = www.assetBundle;
var asset = myLoadedAssetBundle.mainAsset; }
using UnityEngine; using System.Collections;
public class LoadFromCacheOrDownloadExample : MonoBehaviour { IEnumerator Start () { while (!Caching.ready) yield return null;
var www = WWW.LoadFromCacheOrDownload("http://myserver.com/myassetBundle.unity3d", 5); yield return www; if(!string.IsNullOrEmpty(www.error)) { Debug.Log(www.error); yield return; } var myLoadedAssetBundle = www.assetBundle;
var asset = myLoadedAssetBundle.mainAsset; } }
See Also: BuildPipeline.BuildAssetBundle, BuildPipeline.BuildStreamedSceneAssetBundle.