Version: 5.4

WWW.LoadFromCacheOrDownload

マニュアルに切り替える
public static WWW LoadFromCacheOrDownload (string url, int version, uint crc= 0);

パラメーター

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 によって不正確にキャッシュされないようにするために、この方法は有効です。

もし、キャッシュフォルダーに追加できるファイル領域がない場合はキャッシュしようとしているファイルの領域が空くまで LoadFromCacheOrDownload で追加されたもっとも使用頻度の低いアセットバンドルから削除していきます。もし利用可能なファイル領域を確保できない場合(キャッシュされているアセットバンドルをすべて使用している場合や、HDD の要領がいっぱいな場合)は LoadFromCacheOrDownload は "new WWW()" の呼び出しと同じようにメモリ上に展開しストリーミングします。

キャッシュされるデータは、Caching.compressionEnabled を有効にすることにより圧縮形式で保存することができます。

この関数は AssetBundle のアクセスのみに使用することができます。それ以外のタイプやコンテンツはキャッシュできません。

この関数に渡される CRC は、Asset Bundle の実装時間中に計算されます。BuildPipeline.BuildAssetBundle を参照してください。

Note: URL は '%' を避けなければいけません。

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.