Version: 2021.3
言語: 日本語
HTTP サーバーからテクスチャを取得 (GET)
HTTP サーバーにフォームを送信 (POST)

HTTP サーバーからアセットバンドルをダウンロード (GET)

重要: UNet は非推奨のソリューションになり、現在、新しい Multiplayer とネットワーキングソリューション (Netcode for GameObjects) が開発中です。詳細は、GameObjects Web サイトの Unity Netcode を参照してください。

アセットバンドルをサーバーからダウンロードするには UnityWebRequest.GetAssetBundleを利用できます。この関数はデータを内部バッファにストリーミングし、内部バッファではアセットバンドルのデータをワーカースレッドでデコードし解凍します。

関数の引数にはいくつかの形式があります。最も単純な形式では、アセットバンドルをダウンロードする URL だけが必要です。必要に応じて、ダウンロードしたデータの整合性を確認するためのチェックサムを追加することもできます。

また、アセットバンドルのキャッシュシステムを使用する場合は、バージョン番号、または Hash128 データ構造のいずれかを提出します。これらは WWW.LoadFromCacheOrDownload をとおして古いシステムに提供されたバージョン番号、または Hash128 オブジェクト と一致します。

説明

  • この関数は UnityWebRequest を作成し、ターゲット URL を指定された URL 引数に設定します。また、HTTP メソッドを GET に設定しますが、他のフラグやカスタムヘッダーは設定しません。
  • この関数は、UnityWebRequestDownloadHandlerAssetBundle をアタッチします。このダウンロードハンドラーには特別な assetBundle プロパティがあり、十分なデータがダウンロードされデコードされるとリソースへのアクセスを許可され使用できます。
  • 引数としてバージョン番号、または Hash128 オブジェクトを指定すると、これらの引数も DownloadHandlerAssetBundle に渡されます。 すると、ダウンロードハンドラーは、キャッシュシステムを使用します。

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
 
public class MyBehaviour : MonoBehaviour {
    void Start() {
        StartCoroutine(GetAssetBundle());
    }
 
    IEnumerator GetAssetBundle() {
        UnityWebRequest www = UnityWebRequestAssetBundle.GetAssetBundle("https://www.my-server.com/myData.unity3d");
        yield return www.SendWebRequest();
 
        if (www.result != UnityWebRequest.Result.Success) {
            Debug.Log(www.error);
        }
        else {
            AssetBundle bundle = DownloadHandlerAssetBundle.GetContent(www);
        }
    }
}
HTTP サーバーからテクスチャを取得 (GET)
HTTP サーバーにフォームを送信 (POST)