SpriteMaterial.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. using UnityEngine;
  2. using System.Text;
  3. using System.Collections.Generic;
  4. namespace WXB
  5. {
  6. static class SpriteMaterial
  7. {
  8. static Dictionary<Texture, Material> SpriteToMaterials = new Dictionary<Texture, Material>();
  9. static public Material Get(Texture t)
  10. {
  11. Material m = null;
  12. if (SpriteToMaterials.TryGetValue(t, out m))
  13. return m;
  14. m = new Material(Canvas.GetDefaultCanvasMaterial());
  15. m.mainTexture = t;
  16. SpriteToMaterials.Add(t, m);
  17. return m;
  18. }
  19. }
  20. static class FontMaterial
  21. {
  22. static Dictionary<Font, Material> FontToMaterials = new Dictionary<Font, Material>();
  23. static public Material Get(Font f)
  24. {
  25. Material m = null;
  26. if (FontToMaterials.TryGetValue(f, out m))
  27. {
  28. if (m == null)
  29. {
  30. FontToMaterials.Remove(f);
  31. }
  32. else
  33. {
  34. return m;
  35. }
  36. }
  37. m = new Material(Shader.Find("UI/Unlit/Text Detail"));
  38. m.mainTexture = f.material.mainTexture;
  39. FontToMaterials.Add(f, m);
  40. return m;
  41. }
  42. }
  43. }