12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- using System.Collections;
- using System.Collections.Generic;
- using System.IO;
- using UnityEngine;
- using UnityEngine.Networking;
- using static DownLoadXRManager;
- public class DownLoadURLXRItem : MonoBehaviour
- {
- public static Dictionary<string, List<DownLoadConfig>> downLoadingList = new Dictionary<string, List<DownLoadConfig>>();
- public void startDownload(DownLoadConfig config)
- {
- StartCoroutine(ReadStreamingAssetsFile(config));
- }
- IEnumerator ReadStreamingAssetsFile(DownLoadConfig config)
- {
- if (DownLoadXRManager.downLoadCache.ContainsKey(config.data.path))
- {
- config.bytes?.Invoke(DownLoadXRManager.downLoadCache[config.data.path]);
- yield return null;
- }
- else
- {
- if(downLoadingList.ContainsKey(config.data.path))
- {
- downLoadingList[config.data.path].Add(config);
- }
- else
- {
- downLoadingList.Add(config.data.path, new List<DownLoadConfig>());
- downLoadingList[config.data.path].Add(config);
- string filePath = config.data.path;
- Debug.Log("准备下载" + filePath);
- UnityWebRequest www = UnityWebRequest.Get(filePath);
- www.SendWebRequest();
- while (!www.isDone)
- {
- for (int i = 0; i <downLoadingList[config.data.path].Count; i++)
- {
- downLoadingList[config.data.path][i].presson?.Invoke(www.downloadProgress);
- }
- yield return null;
- }
- if (www.result != UnityWebRequest.Result.ConnectionError && www.isDone)
- {
- byte[] bytes = www.downloadHandler.data;
- for (int i = 0; i < downLoadingList[config.data.path].Count; i++)
- {
- downLoadingList[config.data.path][i].bytes?.Invoke(bytes);
- }
- if (!DownLoadXRManager.downLoadCache.ContainsKey(config.data.path))
- DownLoadXRManager.downLoadCache.Add(config.data.path, bytes);
- downLoadingList.Remove(config.data.path);
- }
- else
- {
- for (int i = 0; i < downLoadingList[config.data.path].Count; i++)
- {
- downLoadingList[config.data.path][i].bytes?.Invoke(null);
- }
- downLoadingList.Remove(config.data.path);
- }
- }
- }
- Destroy(this.gameObject);
- }
- }
|