/// <summary> /// 注册缓存材质球(有图片) /// </summary> public static MaterialCache Register(ulong hash, Texture texture, Func <Material> onCreateMaterial) { var cache = materialCaches.FirstOrDefault(x => x.Hash == hash); if (cache != null) { if (cache.MainMaterial) { cache.ReferenceCount++; } else { materialCaches.Remove(cache); cache = null; } } else { cache = new MaterialCache() { Hash = hash, MainMaterial = onCreateMaterial(), MainTexture = texture, ReferenceCount = 1, }; materialCaches.Add(cache); } return(cache); }
/// <summary> /// 注销材质球 /// </summary> public static void Unregister(MaterialCache cache) { if (cache == null) { return; } cache.ReferenceCount--; if (cache.ReferenceCount <= 0) { materialCaches.Remove(cache); cache.MainMaterial = null; cache.MainTexture = null; } }
/// <summary> /// 注册缓存材质球(没有图片) /// </summary> public static MaterialCache Register(ulong hash, Func <Material> onCreateMaterial) { var cache = materialCaches.FirstOrDefault(x => x.Hash == hash); if (cache != null) { cache.ReferenceCount++; } if (cache == null) { cache = new MaterialCache() { Hash = hash, MainMaterial = onCreateMaterial(), ReferenceCount = 1 }; materialCaches.Add(cache); } return(cache); }