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 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 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 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 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; } } } }