Files
2026-04-20 12:06:34 +08:00

157 lines
5.0 KiB
C#

using System.IO;
using UnityEngine;
using UnityEngine.Events;
using System.Collections;
using UnityEngine.Networking;
namespace BallKingdomCrush
{
public class DownloadKit
{
private static void SaveTextFile(string content, string filePath, string fileName)
{
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
File.WriteAllText($"{filePath}{fileName}.txt", content);
}
public static void SaveFile(string content, string filePath, string fileName)
{
SaveTextFile(content, filePath, fileName);
}
private static void SaveTextFile(byte[] content, string filePath, string fileName)
{
if (!Directory.Exists(filePath))
{
Directory.CreateDirectory(filePath);
}
File.WriteAllBytes($"{filePath}{fileName}.txt", content);
}
public static IEnumerator GetTextFromUrl(string url, string fileName, UnityAction<string> action = null,
string savePath = null, bool isSave = true)
{
var unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.result is UnityWebRequest.Result.ConnectionError
or UnityWebRequest.Result.ProtocolError)
{
yield return null;
action?.Invoke(default);
yield break;
}
var content = unityWebRequest.downloadHandler.text;
if (isSave)
{
savePath ??= LegendFileKit.GetFilePath();
SaveTextFile(content, savePath, fileName);
}
yield return null;
action?.Invoke(content);
}
public static IEnumerator GetTextFromUrl1(string url, string fileName, UnityAction<string> action = null,
string savePath = null, bool isSave = true)
{
var www = new WWW(url);
while (!www.isDone)
{
}
if (isSave)
{
savePath ??= LegendFileKit.GetFilePath();
SaveTextFile(www.bytes, savePath, fileName);
}
yield return null;
action?.Invoke(System.Text.Encoding.UTF8.GetString(www.bytes));
}
public static void GetTextFromUrl2(string url, string fileName, UnityAction<string> action = null,
string savePath = null, bool isSave = true)
{
var www = new WWW(url);
while (!www.isDone)
{
}
if (isSave)
{
savePath ??= LegendFileKit.GetFilePath();
SaveTextFile(www.bytes, savePath, fileName);
}
// yield return null;
action?.Invoke(System.Text.Encoding.UTF8.GetString(www.bytes));
}
public static IEnumerator GetFileFromUrl(string url, string fileName, UnityAction<bool> action)
{
var unityWebRequest = UnityWebRequest.Get(url);
yield return unityWebRequest.SendWebRequest();
if (unityWebRequest.result is
UnityWebRequest.Result.ConnectionError or UnityWebRequest.Result.ProtocolError)
{
action?.Invoke(false);
yield break;
}
var results = unityWebRequest.downloadHandler.data;
var savePath = LegendFileKit.GetFilePath();
if (!Directory.Exists(savePath))
{
Directory.CreateDirectory(savePath);
}
var filePath = $"{savePath}{fileName}";
var fileInfo = new FileInfo(filePath);
var fs = fileInfo.Create();
fs.Write(results, 0, results.Length);
fs.Flush();
fs.Close();
fs.Dispose();
yield return YieldConst.WaitForEndOfFrame;
action?.Invoke(true);
}
public static string DownloadResourceSync(string url, string savePath, string fileName, bool isSave = true)
{
using (var unityWebRequest = UnityWebRequest.Get(url))
{
unityWebRequest.SendWebRequest();
while (!unityWebRequest.isDone)
{
// 等待下载完成
}
if (unityWebRequest.result == UnityWebRequest.Result.ConnectionError ||
unityWebRequest.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError($"Error downloading resource: {unityWebRequest.error}");
return "";
}
var content = unityWebRequest.downloadHandler.text;
if (isSave)
{
savePath ??= LegendFileKit.GetFilePath();
SaveTextFile(content, savePath, fileName);
}
return content;
}
}
}
}