IEnumerator Run() { _started = true; LoadItem item = null; while (true) { if (_items.Count > 0) { item = _items[0]; _items.RemoveAt(0); } else { break; } if (_pool.ContainsKey(item.url)) { //Debug.Log("hit " + item.url); NTexture texture = (NTexture)_pool[item.url]; texture.refCount++; if (item.onSuccess != null) { item.onSuccess(texture); } continue; } string url = _basePath + item.url + ".ab"; var www = new WWW(item.url); yield return(www); if (string.IsNullOrEmpty(www.error)) { if (www.texture == null) { Debug.LogWarning("Run Window->Build FairyGUI example Bundles first."); if (item.onFail != null) { item.onFail(www.error); } continue; } NTexture texture = new NTexture(www.texture); texture.refCount++; _pool[item.url] = texture; if (item.onSuccess != null) { item.onSuccess(texture); } } else { if (item.onFail != null) { item.onFail(www.error); } } } _started = false; }