using System; using System.Collections; using System.Collections.Generic; using System.Threading.Tasks; using UnityEngine; using UnityEngine.Networking; [ExecuteInEditMode] public class SetWebGLText : MonoBehaviour { public GameObject UI; public static SetWebGLText Instance; public static Font webglfont; public Font font; // Start is called before the first frame update void Awake() { Instance = this; webglfont = font; // StartCoroutine(LoadAB()); } IEnumerator Downloadip() { UnityWebRequest m_webrequest = UnityWebRequest.Get(Application.streamingAssetsPath + "/1.txt"); yield return m_webrequest.SendWebRequest(); if (m_webrequest.result != UnityWebRequest.Result.Success) { Debug.LogError("Failed to download image"); } else { DataManager.ip = m_webrequest.downloadHandler.text; } } IEnumerator DownloadMacIp() { string filePath = Application.streamingAssetsPath+"/1.txt"; if (!stlist.ContainsKey(filePath)) { if (System.IO.File.Exists(filePath)) { Task fileData = System.IO.File.ReadAllTextAsync(filePath); while (!fileData.IsCompleted) { yield return null; } DataManager.ip = fileData.Result; } } else { yield return null; } } IEnumerator DownloadImageMac(callback url) { string filePath = url.url; if (!stlist.ContainsKey(url.url)) { if (System.IO.File.Exists(filePath)) { Task fileData = System.IO.File.ReadAllBytesAsync(filePath); while (!fileData.IsCompleted) { yield return null; } Texture2D texture = new Texture2D(2, 2); if (texture.LoadImage(fileData.Result)) { stlist.Add(url.url, texture); url.msg.Invoke(texture); isload = false; } } else { isload = false; Debug.LogError("Failed to download image "+ filePath); } } else { yield return null; url.msg.Invoke(stlist[url.url]); isload = false; } } IEnumerator LoadAB() { string filePath = System.IO.Path.Combine(Application.streamingAssetsPath, "stzhongs"); //UnityWebRequest request = UnityWebRequest.Get(filePath); using (UnityWebRequest req = UnityWebRequestAssetBundle.GetAssetBundle(filePath)) { yield return req.SendWebRequest(); if (req.error == null) { AssetBundle ab = (req.downloadHandler as DownloadHandlerAssetBundle).assetBundle; webglfont = ab.LoadAsset("stzhongs"); UI.SetActive(true); } else { Debug.Log(filePath ); } } } Queue dl = new Queue(); public void GetTexture(string url,Action msg) { if(stlist.ContainsKey(url)) { msg.Invoke(stlist[url]); } else { callback cb = new callback(); cb.url = url; cb.msg = msg; dl.Enqueue(cb); } } bool isload; private void Update() { if(dl.Count>0&&!isload) { isload = true; callback cb = dl.Dequeue(); #if UNITY_EDITOR StartCoroutine(DownloadImageMac(cb)); #else StartCoroutine(DownloadImage(cb)); #endif #if UNITY_EDITOR StartCoroutine(DownloadMacIp()); #else StartCoroutine(Downloadip()); #endif } } Dictionary stlist = new Dictionary(); IEnumerator DownloadImage(callback url) { if(!stlist.ContainsKey(url.url)) { UnityWebRequest m_webrequest = UnityWebRequestTexture.GetTexture(url.url); yield return m_webrequest.SendWebRequest(); if (m_webrequest.result != UnityWebRequest.Result.Success) { isload = false; Debug.LogError("Failed to download image"); } else { Texture2D tex = ((DownloadHandlerTexture)m_webrequest.downloadHandler).texture; stlist.Add(url.url, tex); url.msg.Invoke(tex); isload = false; } } else { yield return null; url.msg.Invoke(stlist[url.url]); isload = false; } } public class callback { public string url; public Action msg; } }