private void _addAsbInfo(string asbName, string name, string extral, bool isOrdered) { if (null == OnLoadCallbcak) { return; } AsbInfo info = ObjPools.GetAsbInfo(); info.Set(asbName, name, extral); if (isOrdered) { if (!mQueue.Contains(info)) { mQueue.Enqueue(info); return; } } else { if (!mList.Contains(info)) { mList.Add(info); return; } } //如果已经在list或者队列里则回收 ObjPools.Recover(info); return; }
protected override void OnDestroy() { recoverAll(); if (null != mCurItems) { mCurItems.Clear(); } if (null != mItemPool) { mItemPool.Dispose(); } if (null != mItemDatas) { for (int i = 0; i < mItemDatas.Count; i++) { mItemDatas[i].Dispose(); } mItemDatas.Clear(); } if (null != mOnItemClickLua) { mOnItemClickLua.Dispose(); mOnItemClickLua = null; } if (null != mItemSelectStatus) { ObjPools.Recover(mItemSelectStatus); } if (null != mOnSelectChangeLua) { mOnSelectChangeLua.Dispose(); mOnSelectChangeLua = null; } base.OnDestroy(); }
private bool _onLoad(string asbName, string assetName, T t) { bool ret = mDict.AddObj(asbName, assetName, t); if (null != OnLoadCallbcak) { if (mList.Count > 0) { for (int i = mList.Count - 1; i > -1; --i) { AsbInfo info = mList[i]; if (info.Equals(asbName, assetName)) { OnLoadCallbcak(t, info); mList.Remove(info); ObjPools.Recover(info); } } } if (mQueue.Count > 0) { AsbInfo info = mQueue.Peek(); if (info.Equals(asbName, assetName)) { OnLoadCallbcak(t, info); mQueue.Dequeue(); ObjPools.Recover(info); for (int i = 0; i < mQueue.Count; i++) { AsbInfo head = mQueue.Peek(); T obj = Get(head.asbName, head.assetName); if (null != obj) { OnLoadCallbcak(obj, head); mQueue.Dequeue(); ObjPools.Recover(head); } else { //不是调用序列的第一个直接返回 return(ret); } } } } } return(ret); }
bool _removeUIObj(UIBase obj) { if (null != obj) { if (obj.IsStatic) { if (mStaticViews.Contains(obj)) { int index = mStaticViews.IndexOf(obj); mStaticViews.RemoveAt(index); ObjPools.Recover(mStaticViewInfos[index]); mStaticViewInfos.RemoveAt(index); } } Destroy(obj.gameObject); return(true); } return(false); }
public static int[] GetIntArry(string content) { string[] array = content.Split(','); List <int> l = ObjPools.GetListInt(); for (int i = 0; i < array.Length; i++) { int v; if (!int.TryParse(array[i], out v)) { LogFile.Warn("GetIntArry error -> colorStr:" + content); } else { l.Add(v); } } int[] ret = l.ToArray(); ObjPools.Recover(l); return(ret); }
public void ClearUIByType(RenderMode type) { Canvas c = GetCanvasByMode(type, false); if (null != c) { for (int i = 0; i < c.transform.childCount; ++i) { GameObject child = c.transform.GetChild(i).gameObject; Destroy(child); } if (RenderMode.ScreenSpaceOverlay == type) { mStackViews.Clear(); //TODO:针对static的View处理 mStaticViews.Clear(); for (int i = 0; i < mStaticViewInfos.Count; i++) { ObjPools.Recover(mStaticViewInfos[i]); } mStaticViewInfos.Clear(); } } }
private void onSelectStatusChanges() { List <int> l = ObjPools.GetListInt(); for (int i = 0; i < mItemSelectStatus.Count; i++) { if (mItemSelectStatus[i]) { l.Add(i); } } int[] arr = l.ToArray(); ObjPools.Recover(l); if (null != mOnSelectChange) { mOnSelectChange(arr); } if (null != mOnSelectChangeLua) { mOnSelectChangeLua.Call <int[]>(arr); } }