facebook twitter hatena line email

Unity/AssetBundle/AssetBundleをサーバーから読込

提供: 初心者エンジニアの簡易メモ
2021年8月5日 (木) 17:12時点におけるAdmin (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索

サンプル

  1. AssetBundlesを生成する
  2. 例として、user.csvのアセットバンドルファイル(userとuser.manifest)を上げる。
  3. 以下サンプルを実行。
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class SampleScene : MonoBehaviour
{
    public static TextAsset csv;
    void Start()
    {
        StartCoroutine(GetAssetBundle());
    }
    IEnumerator GetAssetBundle()
    {
        string url = "ttp://www.my-server.com/";
        string assetGroupName = "usergroup";
        using (UnityWebRequest uwr = UnityWebRequestAssetBundle.GetAssetBundle(url + assetGroupName))
        {
            yield return uwr.SendWebRequest();
            if (uwr.isNetworkError || uwr.isHttpError)
            {
                Debug.Log(uwr.error);
            }
            else
            {
                AssetBundle assetBundle = DownloadHandlerAssetBundle.GetContent(uwr);
                string assetFileName = "user";
                csv = assetBundle.LoadAsset<TextAsset>(assetFileName);
                Debug.Log("csv.text=" + csv.text);
            }
        }
    }
}

csv.textのところで、ファイル内のデータが、改行を含んで表示された。

公式マニュアル:https://docs.unity3d.com/ja/current/ScriptReference/Networking.UnityWebRequestAssetBundle.GetAssetBundle.html

既にロード済みのエラーが出る場合

以下エラーが出るとき

can't be loaded because another AssetBundle with the same files is already loaded.

既に同じファイルが、別ロジックからロードされてないか確認。