Exemple #1
0
        /// <summary>
        /// Web上からテクスチャを取得する。
        /// キャッシュにあれば、キャッシュから返す
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public IEnumerator GetWebTexutre(string url)
        {
            //ディクショナリ存在チェック
            if (DicImage.ContainsKey(url))
            {
                //ファイルパス取得
                string filePath = DicImage[url].FilePath;

                //ファイルパスが空の場合は、NULL
                if (filePath == "" || filePath == DOWNLOAD_NOW)
                {
                    yield return(GetNoImageTex());

                    goto End;
                }

                //存在チェック
                if (File.Exists(filePath))
                {
                    //ディクショナリからファイルパスを取得する
                    yield return(TextureUtil.GetTextureFromFile(filePath));

                    goto End;
                }
            }
            else
            {
                //とりあえず登録
                this.Add(new DatImageFileInfo(url, DOWNLOAD_NOW, DateTime.Now));
            }

            //ファイル名、ファイルパス生成
            string path = CreateFilePath(url);

            //ファイル名取得失敗時
            if (path != "")
            {
                //最新ニュースデータ取得
                var Async = WebImage.GetImage(url);

                //非同期実行
                yield return(Async);

                //データ取得
                Texture2D texture = (Texture2D)Async.Current;

                if (texture != null)
                {
                    try
                    {
                        if (!texture.isBogus())
                        {
                            //PNGで保存
                            TextureUtil.SavePng(texture, path);

                            //辞書に登録
                            this.Add(new DatImageFileInfo(url, path, DateTime.Now));
                        }
                        else
                        {
                            //ノーイメージをセット
                            texture = GetNoImageTex();

                            //辞書に登録
                            this.Add(new DatImageFileInfo(url, "", DateTime.Now));
                        }
                    }
                    catch
                    {
                        Debug.Log("ファイル保存失敗:" + url);
                    }
                }
                else
                {
                    //ノーイメージをセット
                    texture = GetNoImageTex();

                    //辞書に登録
                    this.Add(new DatImageFileInfo(url, "", DateTime.Now));
                }

                //セーブ
                Save();

                //取得したテクスチャを返す
                yield return(texture);
            }
            else
            {
                //空を返す
                yield return(null);
            }

            End :;
        }
Exemple #2
0
        /// <summary>
        /// Web上からテクスチャを取得する。
        /// キャッシュにあれば、キャッシュから返す
        /// </summary>
        /// <param name="url"></param>
        /// <returns></returns>
        public IEnumerator DownloadWebTexutre(string url)
        {
            //ディクショナリ存在チェック
            if (DicImage.ContainsKey(url))
            {
                yield break;
            }

            //ファイル名、ファイルパス生成
            string path = CreateFilePath(url);

            //ファイル名取得失敗時
            if (path != "")
            {
                //最新ニュースデータ取得
                var Async = WebImage.GetImage(url);

                //非同期実行
                yield return(Async);

                //データ取得
                Texture2D texture = (Texture2D)Async.Current;

                if (texture != null)
                {
                    try
                    {
                        if (!texture.isBogus())
                        {
                            //PNGで保存
                            TextureUtil.SavePng(texture, path);

                            //辞書に登録
                            this.Add(new DatImageFileInfo(url, path, DateTime.Now));
                        }
                        else
                        {
                            //ノーイメージをセット
                            texture = GetNoImageTex();

                            //辞書に登録
                            this.Add(new DatImageFileInfo(url, "", DateTime.Now));
                        }
                    }
                    catch
                    {
                        Debug.Log("ファイル保存失敗:" + url);
                    }
                }
                else
                {
                    //ノーイメージをセット
                    texture = GetNoImageTex();

                    //辞書に登録
                    this.Add(new DatImageFileInfo(url, "", DateTime.Now));
                }

                //セーブ
                Save();
            }
            else
            {
                //辞書に登録
                this.Add(new DatImageFileInfo(url, "", DateTime.Now));
            }
        }