/// <summary> /// 添加待加载对象; /// </summary> /// <param name="url">资源路径</param> /// <param name="key">主键值</param> /// <param name="weight">资源大小</param> /// <param name="type">资源类型</param> public void add(string url, string key = null, float bytes = 0, string type = null) { LoaderData data = new LoaderData(); data.url = url; data.bytes = bytes != 0 ? bytes : 1; data.key = key != null ? key : url; data.type = type != null ? type : getType(); list.addElement(data.key, data); itemTotal++; //总待加载资源数增加; }
/// <summary> /// 加载完成; /// </summary> protected void onComplete(LoaderData data) { Debug.Log("Complete:" + www.bytesDownloaded); Timer.instance.clearTimer(timerHandleKey); //停止计时器函数; AssetBundle bundle = www.assetBundle; //TODO 将assetBunle进行存储; itemLoaded++; //已加载资源个数增加; bytesLoaded += data.bytes; //已加载资源字节数增加; if (itemLoaded >= itemTotal) { if (onCompleteHandler != null) onCompleteHandler(data.key); //执行外部加载完成回调函数; } else StartCoroutine(run(list.pop())); //启动协程进行加载; }
/// <summary> /// 执行加载; /// </summary> /// <param name="data"></param> /// <returns></returns> IEnumerator run(LoaderData data) { www = new WWW(data.url); timerHandleKey = Timer.instance.doFrameLoop(1, onProgress); yield return www; onComplete(data); //执行加载完成函数; }