/// <summary> /// 删除图片(非强制删除) /// </summary> /// <param name="id"></param> /// <param name="size"></param> public void deleteImage(string id, TextureSize_state size) { //Debug.Log ("deleteImage "+id); if (!imgList.ContainsKey(id)) { Debug.LogError(imgList.Count + "====deleteImage ERROR" + id); return; } Image_info info = imgList[id]; if (info == null) { Debug.LogError("deleteImage ERROR"); return; } //如果缓存中有图片,则删除该图片不继续加载 if (iList.Contains(info)) { iList.Remove(info); } info.stateIndex[(int)size]--; if (info.stateIndex[(int)size] < 0) { Debug.LogError("deleteImage ERROR 引用计数溢出"); } //如果所有计数均为0,则删除该图片 int max = 0; for (int i = 0; i < info.stateIndex.Length; i++) { max += info.stateIndex[i]; } if (max <= 0) { imgList.Remove(id); Resources.UnloadUnusedAssets(); } }
public void loadImage(string id, TextureSize_state size, Callback <Texture2D> fun, bool isFistLoad = false) { if (imgList.ContainsKey(id)) { Image_info info = imgList[id]; info.isError = "null"; info.site = "null"; info.fun = fun; //如果有小图,则删除小图,加载大图 if ((int)imgList[id].state > (int)size) { info.state = size; info.stateIndex[(int)size]++; listAddImg(info, isFistLoad); listLoadImg(); } //否则记数加1,然后返回图片 else { info.stateIndex[(int)size]++; fun(imgList[id].tex); } } else { //请求本地是否有该图片 Image_info info = new Image_info(); info.isError = "null"; info.site = "null"; info.tex = new Texture2D(0, 0); info.key = id; info.state = size; info.stateIndex[(int)size] = 1; info.fun = fun; imgList.Add(id, info); listAddImg(info, isFistLoad); listLoadImg(); } }
private static string getSizeString(TextureSize_state size) { switch (size) { case TextureSize_state.Texture_raw: return(""); case TextureSize_state.Texture_big: return("!imysky-style-adaptiveh-360w-90q"); case TextureSize_state.Texture_centre: return("!imysky-style-adaptiveh-180w-90q"); case TextureSize_state.Texture_little: return("imysky-style-adaptiveh-100w-90q"); case TextureSize_state.Texture_tiny: return("!imysky-style-adaptiveh-40w-90q"); default: return(null); } }