AtlasInfo.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using UnityEngine;
  2. using System.Collections;
  3. public class AtlasInfo : ScriptableObject {
  4. [System.Serializable]
  5. public class UVDetail
  6. {
  7. public Vector2 uvTL;
  8. public Vector2 uvTR;
  9. public Vector2 uvBL;
  10. public Vector2 uvBR;
  11. public bool rotate;
  12. public string Name;
  13. public int x;
  14. public int y;
  15. public int width;
  16. public int height;
  17. }
  18. public Texture2D texture;
  19. public Texture2D textureAlpha;
  20. public UVDetail[] uvDetails;
  21. public Material specialMaterial = null;
  22. [System.NonSerialized]
  23. private Material m_material = null;
  24. public UVDetail GetUV(string atlasName)
  25. {
  26. if(string.IsNullOrEmpty(atlasName))
  27. {
  28. return null;
  29. }
  30. for(int i = 0; i < uvDetails.Length; ++i)
  31. {
  32. if(uvDetails[i].Name == atlasName)
  33. {
  34. return uvDetails[i];
  35. }
  36. }
  37. return null;
  38. }
  39. public Material material
  40. {
  41. get
  42. {
  43. if(null == m_material)
  44. {
  45. if (specialMaterial != null)
  46. {
  47. m_material = specialMaterial;
  48. }
  49. else
  50. {
  51. Shader shader = Shader.Find("UI/UI3D");
  52. m_material = new Material(shader);
  53. }
  54. m_material.SetTexture("_MainTex", texture);
  55. if (null != textureAlpha)
  56. {
  57. m_material.SetTexture("_AlphaTex", textureAlpha);
  58. m_material.EnableKeyword("_SEPERATE_ALPHA_TEX_ON");
  59. }
  60. }
  61. return m_material;
  62. }
  63. }
  64. }