示例#1
0
        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));
                }
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }