Beispiel #1
0
 public Handle(LocalCfgCallback varFunc, Type varTargetType, string varFilePath, GameObjPool.ObjFlag varCfgObjFlag = GameObjPool.ObjFlag.UseOriObj)
 {
     Callback   = varFunc;
     TargetType = varTargetType;
     FilePath   = varFilePath;
     CfgObjFlag = varCfgObjFlag;
 }
Beispiel #2
0
        /// <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);
        }