public Handle(LocalCfgCallback varFunc, Type varTargetType, string varFilePath, GameObjPool.ObjFlag varCfgObjFlag = GameObjPool.ObjFlag.UseOriObj) { Callback = varFunc; TargetType = varTargetType; FilePath = varFilePath; CfgObjFlag = varCfgObjFlag; }
/// <summary> /// 获取一个缓存对象,varIsUseOriObj:是否使用源对象 /// </summary> /// <param name="varIsUseOriObj"></param> /// <returns></returns> public CacheObjInfo GetCacheObj(GameObjPool.ObjFlag varResult) { if (mCacheObjs == null) { mCacheObjs = new List <CacheObjInfo>(); } CacheObjInfo info = null; for (int i = 0; i < mCacheObjs.Count; i++) { CacheObjInfo tmpInfo = mCacheObjs[i]; if (tmpInfo == null) { mCacheObjs.Remove(tmpInfo); i--; continue; } if (tmpInfo.IsLock() == false) { info = tmpInfo; } } if (info == null) { switch (varResult) { case GameObjPool.ObjFlag.Clone: info = new CacheObjInfo(UnityEngine.Object.Instantiate(mObj), this); break; case GameObjPool.ObjFlag.UseOriObj: info = new CacheObjInfo(mObj, this); break; case GameObjPool.ObjFlag.CloneWhenUse: info = new CacheObjInfo(null, this); break; } mCacheObjs.Add(info); } info.Lock(); mRefCount++; RefreshHolder(); return(info); }