public void ReleaseResourceObjects(ResourceObject[] resobjs) { if (resobjs != null) { int i = 0; for (int num = resobjs.Length; i < num; i++) { ResourceObject resobj = resobjs[i]; if (resobj != null) { resobj.refCount--; if (resobj.refCount == 0) { resobj.obj = null; if (objectCaches[(int)resobj.category] != null && objectCaches[(int)resobj.category].Get(resobj.name) != null) { objectCaches[(int)resobj.category].Remove(resobj.name); } PackageObject pakobj = resobj.package; if (pakobj != null) { ReleasePackageObjects(pakobj.linkPackages); ReleasePackageObject(ref pakobj); } ResourceObject.Release(ref resobj); RequestUnloadUnusedAssets(); } } } } }
public void ClearObjectCaches(RESOURCE_CATEGORY[] categories) { if (objectCaches != null && categories != null) { List <string> releasedObjNames = new List <string>(); int i = 0; for (int num = categories.Length; i < num; i++) { int num2 = (int)categories[i]; releasedObjNames.Clear(); if (objectCaches[num2] != null) { objectCaches[num2].ForEach(delegate(ResourceObject o) { if (!IgnoreCategorySpecifiedReleaseList.Contains(o.name)) { releasedObjNames.Add(o.name); ResourceObject.Release(ref o); } }); int j = 0; for (int count = releasedObjNames.Count; j < count; j++) { objectCaches[num2].Remove(releasedObjNames[j]); } } } } }
public void ClearObjectCaches(bool clearPreloaded) { if (MonoBehaviourSingleton <InGameManager> .IsValid() && MonoBehaviourSingleton <InGameManager> .I.selfCacheObject != null) { MonoBehaviourSingleton <InGameManager> .I.DestroySelfCache(); } if (IgnoreCategorySpecifiedReleaseList != null) { IgnoreCategorySpecifiedReleaseList.Clear(); } if (clearPreloaded && PreloadedInGameResouces != null) { PreloadedInGameResouces.Clear(); } if (objectCaches != null) { if (clearPreloaded) { int i = 0; for (int num = objectCaches.Length; i < num; i++) { if (objectCaches[i] != null) { objectCaches[i].ForEach(delegate(ResourceObject o) { ResourceObject.Release(ref o); }); objectCaches[i].Clear(); } } } else { List <string> releasedObjNames = new List <string>(); int j = 0; for (int num2 = objectCaches.Length; j < num2; j++) { releasedObjNames.Clear(); if (objectCaches[j] != null) { objectCaches[j].ForEach(delegate(ResourceObject o) { if (!PreloadedInGameResouces.Contains(o.name)) { releasedObjNames.Add(o.name); ResourceObject.Release(ref o); } }); int k = 0; for (int count = releasedObjNames.Count; k < count; k++) { objectCaches[j].Remove(releasedObjNames[k]); } } } } } }