public void removeDelegates(string key) { if (delegateInfro [key] != null) { NewList list = (delegateInfro[key]) as NewList; if (list != null) { for (int i = 0; i < list.Count; i++) { ObjPool.listPool.returnObject(list[i] as NewList); } list.Clear(); ObjPool.listPool.returnObject(list); list = null; } } delegateInfro.Remove(key); }
public static void uncheckWWWTimeout(UnityWebRequest www, string url) { try { if (www != null && !ReferenceEquals(www, null)) { wwwMap4Get.Remove(url); NewList list = wwwMap4Check[www] as NewList; if (list != null) { list.Clear(); ObjPool.listPool.returnObject(list); } wwwMap4Check.Remove(www); } } catch (System.Exception e) { Debug.LogError(e); } }
public object[] call(LuaFunction func, params object[] _params) { if (func == null) { return(null); } if (isClassLua) { NewList list = ObjPool.listPool.borrowObject(); list.Clear(); list.Add(luaTable); list.AddRange(_params); object[] ret = func.Call(list.ToArray(), null); ObjPool.listPool.returnObject(list); return(ret); } else { return(func.Call(_params)); } }
public static void checkWWWTimeout() { NewList keys = ObjPool.listPool.borrowObject(); keys.AddRange(wwwMap4Check.Keys); UnityWebRequest www = null; NewList list = null; for (int i = 0; i < keys.Count; i++) { www = keys[i] as UnityWebRequest; if (www != null) { list = wwwMap4Check[www] as NewList; if (list != null) { doCheckWWWTimeout(www, list); } } } keys.Clear(); ObjPool.listPool.returnObject(keys); keys = null; }
public static void doCheckWWWTimeout(UnityWebRequest www, NewList list) { //yield return new WaitForSeconds(checkProgressSec); string url = list[0] as string; object timeoutCallback = list[1]; float checkProgressSec = (float)(list[2]); object orgs = list[3]; float oldProgress = (float)(list[4]); float oldSize = (float)(list[5]); float lastCheckTime = (float)(list[6]); int maxFailTimes = (int)(list[7]); int failedTimes = (int)(list[8]); RedCallback redrectioncallback = list[9] as RedCallback; if (Time.realtimeSinceStartup - lastCheckTime < 0) { return; } try { if (www != null) { if (www.isDone) { wwwMap4Check.Remove(www); list.Clear(); ObjPool.listPool.returnObject(list); } else { float curProgress = 0; float curSize = 0; if (www.method == "PUT") { curProgress = www.uploadProgress; if (www.uploadHandler != null && www.uploadHandler.data != null) { curSize = www.uploadHandler.data.Length; } } else { curProgress = www.downloadProgress; if (www.downloadHandler != null && www.downloadHandler.data != null) { curSize = www.downloadHandler.data.Length; } } if (Mathf.Abs(curProgress - oldProgress) < 0.0001f && Mathf.Abs(curSize - oldSize) < 0.0001f) { //说明没有变化,可能网络不给力 if (maxFailTimes > failedTimes + 1) { if (redrectioncallback != null) { redrectioncallback(url); } } else { Coroutine corout = wwwMap4Get[url] as Coroutine; if (corout != null) { self.StopCoroutine(corout); } wwwMap4Get.Remove(url); wwwMapUrl.Remove(url); list.Clear(); ObjPool.listPool.returnObject(list); wwwMap4Check.Remove(www); www.Abort(); www.Dispose(); www = null; Debug.LogError("www time out! url==" + url); Utl.doCallback(timeoutCallback, null, orgs); } } else { //Coroutine cor = self.StartCoroutine(doCheckWWWTimeout(www, url, checkProgressSec, timeoutCallback, curProgress, orgs)); list[4] = curProgress; list[5] = curSize; list[6] = Time.realtimeSinceStartup + checkProgressSec; wwwMap4Check[www] = list; } } } } catch (System.Exception e) { Debug.LogError(e); } }