public void SetAsyncImage(string url, AsyncImgCall call) { //图片储存路径 string path = Application.persistentDataPath + "/ImageCache/"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fileName = path + url.GetHashCode(); if (TextureDic.ContainsKey(fileName)) { call(EnAsyncImgStatus.EnFinish, TextureDic[fileName]); } else { if (!File.Exists(path + url.GetHashCode())) { call(EnAsyncImgStatus.EnStart, null); StartCoroutine(DownloadImage(url, path, call)); } else { StartCoroutine(LoadLocalImage(url, path, call)); } } }
private IEnumerator DownloadImage(string url, string path, AsyncImgCall call) { WWW www = new WWW(url); yield return(www); if (www.error != null) { //YxDebug.Log(www.error); call(EnAsyncImgStatus.EnError, www.error); yield break; } Texture2D image = www.texture; byte[] pngData = image.EncodeToPNG(); File.WriteAllBytes(path + url.GetHashCode(), pngData); call(EnAsyncImgStatus.EnFinish, image); string key = path + url.GetHashCode(); if (!TextureDic.ContainsKey(key)) { TextureDic.Add(key, image); } }
private IEnumerator LoadLocalImage(string url, string path, AsyncImgCall call) { string filepath = "file:///" + path + url.GetHashCode(); WWW www = new WWW(filepath); yield return(www); if (www.error != null) { call(EnAsyncImgStatus.EnError, www.error); yield break; } call(EnAsyncImgStatus.EnFinish, www.texture); string key = path + url.GetHashCode(); if (!TextureDic.ContainsKey(key)) { TextureDic.Add(key, www.texture); } }