예제 #1
0
        /// <summary>
        /// 删除单个资源
        /// </summary>
        /// <param name="sRes">资源Spirit</param>
        /// <param name="bRemoveUserUse">是否强制删除用户使用的资源</param>
        public static void Remove(Spirit sRes, bool bRemoveUserUse = false)
        {
            ResContainer arrContainer = mStore[sRes.iInstanceType];

            arrContainer.Remove(sRes.iInstanceId, bRemoveUserUse);
            sRes = null;
        }
예제 #2
0
        /// <summary>
        /// 回收资源
        /// </summary>
        /// <param name="sRes"></param>
        public static void Recycle(Spirit sRes)
        {
            ResContainer arrContainer = mStore[sRes.iInstanceType];

            arrContainer.Recycle(sRes.iInstanceId);
            sRes = null;
        }
예제 #3
0
        /// <summary>
        /// 获得基类
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="iType"></param>
        /// <param name="bUserUse"></param>
        /// <returns></returns>
        public static T GetBase <T>(int iType, bool bUserUse = false) where T : Spirit, new()
        {
            //#if UNITY_EDITOR || UNITY_DEBUG
            if (!mStore.ContainsKey(iType))
            {
                Debug.LogError("ResStore error :  Cannot find resource type " + iType);
                return(null);
            }
            //#endif

            ResContainer arrContainer = mStore[iType];
            RES_Struct   res          = arrContainer.GetNewRes();

            res.bUserUse = bUserUse;
            res.bUsed    = true;

            if (!res.bAddComponented)
            {
                res.com = (T)res.obj.GetComponent <T>();
                if (!res.com)
                {
                    res.com = (T)res.obj.AddComponent <T>();
                }
                res.com.iInstanceType = iType;
                res.com.iInstanceId   = res.iInstanceId;
                res.bAddComponented   = true;
                return((T)res.com);
            }
            else
            {
                return((T)res.obj.GetComponent <T>());
            }
        }
예제 #4
0
        /// <summary>
        /// 获得对象(需要手动删除)
        /// </summary>
        /// <param name="iType"></param>
        /// <returns></returns>
        public static GameObject Get(int iType)
        {
            ResContainer arrContainer = mStore[iType];
            RES_Struct   res          = arrContainer.GetNewRes();

            res.bUserUse = true;
            res.bUsed    = true;
            return(res.obj);
        }
예제 #5
0
 /// <summary>
 ///  添加资源
 /// </summary>
 /// <param name="iType"></param>
 /// <param name="obj"></param>
 public static void Add(int iType, GameObject obj)
 {
     if (!mStore.ContainsKey(iType))
     {
         mStore.Add(iType, new ResContainer(obj));
     }
     else
     {
         mStore [iType] = new ResContainer(obj);
         Debug.LogWarning("Error : ResourcesType : already exist " + iType);
     }
 }
예제 #6
0
        /// <summary>
        /// 删除全部类型资源
        /// </summary>
        /// <param name="iKey">类型</param>
        public static void RemoveAll(int iKey, bool bRemoveUserUse = false)
        {
            ResContainer arrContainer = mStore[iKey];

            arrContainer.RemoveAll(bRemoveUserUse);
        }