using DG.Tweening.Plugins.Core.PathCore; using System; using System.Collections; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using UnityEngine; using UnityEngine.Networking; public static class InterfaceManager { public static string ConfigureAudioPath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Audio.json"; public static string ConfigureDevicePath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Device.json"; public static string ConfigureApiPath { get; } = Application.streamingAssetsPath + "/ConfigurationFile/Configure_Api.txt"; #region 接口地址 public static string IpAddress = ""; public static string GET_Data = "Data"; public static string GET_User = "User"; public static Dictionary API_DIC = new Dictionary(); #endregion public static IEnumerator Post(string _url, string _post_json_str, Action _callback) { using (UnityWebRequest _request = new UnityWebRequest()) { _request.url = _url; _request.method = "POST"; _request.downloadHandler = new DownloadHandlerBuffer(); int _time_out = 0; int.TryParse(API_DIC["TIME_OUT"], out _time_out); _request.timeout = _time_out; _request.SetRequestHeader("auth_token", GameInit.InfoIni.token); _request.SetRequestHeader("Content-Type", "application/json;charset=utf-8"); byte[] bodyRaw = Encoding.UTF8.GetBytes(_post_json_str); _request.uploadHandler = new UploadHandlerRaw(bodyRaw); yield return _request.SendWebRequest(); if (_request.error != null) { Debug.Log("调用接口[" + _url + "]错误!:" + _request.error); _callback?.Invoke(_request.url+":["+_request.error+"]", null); } else { _callback?.Invoke(null, _request.downloadHandler.text); } } } public static IEnumerator Get(string _path, Action _callback) { using (UnityWebRequest _request = UnityWebRequest.Get(_path)) { int _time_out = 0; int.TryParse(API_DIC["TIME_OUT"], out _time_out); _request.timeout = _time_out; _request.SetRequestHeader("auth_token", GameInit.InfoIni.token); yield return _request.SendWebRequest(); if (_request.error != null) { Debug.Log("调用接口[" + _request.url + "]错误!:" + _request.error); _callback?.Invoke(_request.url + ":[" + _request.error + "]", null); } else { _callback?.Invoke(null,_request.downloadHandler.text); } } } public static IEnumerator GetDataFullUrl(string url, Action callback) { using (UnityWebRequest _request = UnityWebRequest.Get(url)) { int _time_out = 0; int.TryParse(API_DIC["TIME_OUT"], out _time_out); _request.timeout = _time_out; yield return _request.SendWebRequest(); if (_request.error != null) { Debug.Log("调用接口[" + url + "]错误!:" + _request.error); } else { callback?.Invoke(_request.downloadHandler.text); } } } /// /// 下载图片 /// /// /// /// public static IEnumerator GetSprite(string _url, Action _callback) { using (UnityWebRequest _request = UnityWebRequest.Get(_url)) { int _time_out = 0; int.TryParse(API_DIC["TIME_OUT"], out _time_out); _request.timeout = _time_out; DownloadHandlerTexture _downloadHandlerTexture = new DownloadHandlerTexture(true); _request.downloadHandler = _downloadHandlerTexture; yield return _request.SendWebRequest(); if (_request.error != null) { Debug.Log("调用接口[" + _url + "]错误!:" + _request.error); } else { var _texture = _downloadHandlerTexture.texture; Sprite _sprite = Sprite.Create(_texture, new Rect(0, 0, _texture.width, _texture.height), new Vector2(0.5f, 0.5f)); _callback?.Invoke(_sprite); } } } public static IEnumerator GetAudio(string _url, Action _callback) { using (var _request = UnityWebRequestMultimedia.GetAudioClip(_url, AudioType.MPEG)) { int _time_out = 0; int.TryParse(API_DIC["TIME_OUT"], out _time_out); _request.timeout = _time_out; yield return _request.SendWebRequest(); if (_request.error != null) { Debug.LogError("调用接口[" + _url + "]错误!:" + _request.error); } else { _callback?.Invoke(DownloadHandlerAudioClip.GetContent(_request)); } } } /// /// 获取本地文件 /// /// /// public static void GetLocalFiles(string _path, Action> _callback) { if (Directory.Exists(_path)) { DirectoryInfo direction = new DirectoryInfo(_path); FileInfo[] files = direction.GetFiles("*", SearchOption.AllDirectories); List _result = new List(); for (int i = 0; i < files.Length; i++) { if (files[i].Name.EndsWith(".meta")) { continue; } _result.Add(files[i]); //Debug.Log("Name : " + files[i].Name); //Debug.Log("FullName : " + files[i].FullName); //Debug.Log("DirectoryName : " + files[i].DirectoryName); } _callback?.Invoke(_result); } } }