示例#1
0
        /// <summary>
        /// テクスチャをロード
        /// </summary>
        /// <param name="path">パス</param>
        /// <param name="onLoaded">ロード完了後のコールバック</param>
        /// <returns></returns>
        public IEnumerator LoadTexture(string path, UnityAction <Texture> onLoaded)
        {
            if (requestCache.ContainsKey(path))
            {
                // キャッシュに既にリクエストがあれば、キャッシュから取得する
                var req = requestCache[path];
                // 参照カウントは1以上のはず
                Assert.IsTrue(req.refCount >= 1);

                // 参照カウント増加
                req.refCount++;

                var www = req.www;

                // wwwが完了済みか?
                if (requestCache[path].www.isDone)
                {
                    // 完了済みなのでコールバックに渡す
                    onLoaded(www.texture);
                    yield break;
                }
                else
                {
                    // 未完了なので待つ
                    while (!www.isDone)
                    {
                        yield return(null);
                    }
                    onLoaded(www.texture);
                }
            }
            else
            {
                // キャッシュに無いのでリクエストを作成
                var req = new WwwRequest();
                req.refCount = 1;
                req.www      = new WWW(path);

                // キャッシュに追加
                requestCache[path] = req;

                // ロード完了まで待つ
                yield return(req.www);

                onLoaded(req.www.texture);
            }
        }
示例#2
0
 public void Build(WwwRequest request)
 {
     WWW www = createWww(request.urlData, request.postData);
     request.SetWww(www);
 }