static void InitSingleSpriteCache(this ImageLoaderComponent self, LruCache <string, SpriteValue> cache) { cache.SetCheckCanPopCallback((string key, SpriteValue value) => { return(value.ref_count == 0); }); cache.SetPopCallback((key, value) => { ResourcesComponent.Instance.ReleaseAsset(value.asset); value.asset = null; value.ref_count = 0; }); }
static void InitSpriteAtlasCache(this ImageLoaderComponent self, LruCache <string, SpriteAtlasValue> cache) { cache.SetCheckCanPopCallback((string key, SpriteAtlasValue value) => { return(value.ref_count == 0); }); cache.SetPopCallback((key, value) => { var subasset = value.subasset; foreach (var item in subasset) { UnityEngine.Object.Destroy(item.Value.asset); item.Value.asset = null; item.Value.ref_count = 0; } ResourcesComponent.Instance.ReleaseAsset(value.asset); value.asset = null; value.ref_count = 0; }); }