/// <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; }
/// <summary> /// 回收资源 /// </summary> /// <param name="sRes"></param> public static void Recycle(Spirit sRes) { ResContainer arrContainer = mStore[sRes.iInstanceType]; arrContainer.Recycle(sRes.iInstanceId); sRes = null; }
/// <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>()); } }
/// <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); }
/// <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); } }
/// <summary> /// 删除全部类型资源 /// </summary> /// <param name="iKey">类型</param> public static void RemoveAll(int iKey, bool bRemoveUserUse = false) { ResContainer arrContainer = mStore[iKey]; arrContainer.RemoveAll(bRemoveUserUse); }