FateViewer/Assets/Scripts/FateAssetManager.cs

85 lines
2.2 KiB
C#
Raw Normal View History

2023-10-09 00:51:40 +08:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class FateAssetManager : MonoBehaviour
{
public static FateAssetManager Instance;
void Awake()
{
Instance = this;
}
public static IEnumerator DownloadTexture(string url, System.Action<Texture2D> callback)
{
Texture2D outTex = null;
Debug.Log("Downloading Texture " + url);
UnityWebRequest www = UnityWebRequestTexture.GetTexture(url);
yield return www.SendWebRequest();
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log(www.error);
}
else
{
outTex = ((DownloadHandlerTexture)www.downloadHandler).texture;
outTex.wrapMode = TextureWrapMode.Clamp;
}
callback(outTex);
}
2023-12-04 02:42:12 +08:00
public static IEnumerator DownloadText(string url, System.Action<string> callback, System.Action<float> onProgress = null)
2023-10-09 00:51:40 +08:00
{
UnityWebRequest www = UnityWebRequest.Get(url);
2023-12-04 02:42:12 +08:00
var request = www.SendWebRequest();
while (!request.isDone)
{
onProgress?.Invoke(request.progress);
yield return 0;
}
2023-10-09 00:51:40 +08:00
if (www.result != UnityWebRequest.Result.Success)
{
Debug.Log(url);
Debug.Log(www.error);
callback(null);
}
else
{
var str = www.downloadHandler.text;
callback(str);
}
}
2023-12-04 02:42:12 +08:00
public static IEnumerator DownloadBundle(string url, System.Action<AssetBundle> callback, System.Action<float> onProgress = null)
2023-10-09 00:51:40 +08:00
{
Error.Log(Color.green, $"Downloading bundle from {url}");
2023-12-04 02:42:12 +08:00
UnityWebRequest www = UnityWebRequest.Get(url);
var request = www.SendWebRequest();
while (!request.isDone)
{
onProgress?.Invoke(request.progress);
yield return 0;
}
2023-10-09 00:51:40 +08:00
if (www.result != UnityWebRequest.Result.Success)
{
2023-12-04 02:42:12 +08:00
Debug.Log(url);
Debug.Log(www.error);
callback(null);
2023-10-09 00:51:40 +08:00
}
else
{
2023-12-04 02:42:12 +08:00
var bytes = www.downloadHandler.data;
callback(AssetBundle.LoadFromMemory(bytes));
2023-10-09 00:51:40 +08:00
}
}
}