ノート: UNet は非推奨となり、今後 Unity から削除される予定です。新しいシステムが開発中です。詳細は ブログ と FAQ を参照してください。 |
アセットバンドルをサーバーからダウンロードするには UnityWebRequest.GetAssetBundle
を利用できます。この関数はデータを内部バッファにストリーミングし、内部バッファではアセットバンドルのデータをワーカースレッドでデコードし解凍します。
関数の引数にはいくつかの形式があります。最も単純な形式では、アセットバンドルをダウンロードする URL だけが必要です。必要に応じて、ダウンロードしたデータの整合性を確認するためのチェックサムを追加することもできます。
また、アセットバンドルのキャッシュシステムを使用する場合は、バージョン番号、または Hash128 データ構造のいずれかを提出します。これらは WWW.LoadFromCacheOrDownload
をとおして古いシステムに提供されたバージョン番号、または Hash128 オブジェクト
と一致します。
UnityWebRequest
を作成し、ターゲット URL を指定された URL 引数に設定します。また、HTTP メソッドを GET
に設定しますが、他のフラグやカスタムヘッダーは設定しません。UnityWebRequest
に DownloadHandlerAssetBundle
をアタッチします。このダウンロードハンドラーには特別な assetBundle
プロパティがあり、十分なデータがダウンロードされデコードされるとリソースへのアクセスを許可され使用できます。Hash128
オブジェクトを指定すると、これらの引数も DownloadHandlerAssetBundle
に渡されます。 すると、ダウンロードハンドラーは、キャッシュシステムを使用します。using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class MyBehaviour : MonoBehaviour {
void Start() {
StartCoroutine(GetAssetBundle());
}
IEnumerator GetAssetBundle() {
UnityWebRequest www = UnityWebRequest.GetAssetBundle("http://www.my-server.com/myData.unity3d");
yield return www.SendWebRequest();
if(www.isNetworkError || www.isHttpError) {
Debug.Log(www.error);
}
else {
AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
}
}
}