EditorSpriteAsste.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. using UnityEditor;
  2. using UnityEngine;
  3. using System.Collections;
  4. using System.Collections.Generic;
  5. [CustomEditor(typeof(SpriteAsset))]
  6. public class EditorSpriteAsste : Editor
  7. {
  8. #region 变量
  9. private Vector2 ScrollPos;
  10. #endregion
  11. private void OnEnable()
  12. {
  13. }
  14. public override void OnInspectorGUI()
  15. {
  16. base.OnInspectorGUI();
  17. if (GUILayout.Button("GetSpriteInfo"))
  18. {
  19. GetSpriteInfo();
  20. }
  21. ScrollPos = GUILayout.BeginScrollView(ScrollPos, false, false);
  22. if (SpriteAsset.SpriteInfoList != null)
  23. {
  24. for (int i = 0; i < SpriteAsset.SpriteInfoList.Count; i++)
  25. {
  26. SpriteInfo spriteInfo = SpriteAsset.SpriteInfoList[i];
  27. EditorGUILayout.ObjectField("", spriteInfo.Sprite, typeof(Sprite), false);
  28. GUILayout.BeginVertical();
  29. EditorGUILayout.LabelField("Name : " + spriteInfo.Name);
  30. EditorGUILayout.LabelField("LowerLeft : " + spriteInfo.UvList[0]);
  31. EditorGUILayout.LabelField("UpperLeft : " + spriteInfo.UvList[1]);
  32. EditorGUILayout.LabelField("UpperRight : " + spriteInfo.UvList[2]);
  33. EditorGUILayout.LabelField("LowerRight : " + spriteInfo.UvList[3]);
  34. EditorGUILayout.LabelField("");
  35. GUILayout.EndVertical();
  36. }
  37. }
  38. GUILayout.EndScrollView();
  39. }
  40. private void GetSpriteInfo()
  41. {
  42. SpriteAsset.SpriteInfoList = new List<SpriteInfo>();
  43. string path = AssetDatabase.GetAssetPath(SpriteAsset.Texture);
  44. Object[] objects = AssetDatabase.LoadAllAssetsAtPath(path);
  45. for (int i = 0; i < objects.Length; i++)
  46. {
  47. if (objects[i] is Sprite)
  48. {
  49. Sprite sprite = (Sprite) objects[i];
  50. SpriteInfo spriteInfo = new SpriteInfo();
  51. spriteInfo.Sprite = sprite;
  52. spriteInfo.Name = sprite.name;
  53. float width = SpriteAsset.Texture.width;
  54. float height = SpriteAsset.Texture.height;
  55. Vector2 llUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMin/height);
  56. Vector2 ulUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMax/height);
  57. Vector2 urUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMax/height);
  58. Vector2 lrUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMin/height);
  59. spriteInfo.UvList = new List<Vector2>();
  60. spriteInfo.UvList.Add(llUv);
  61. spriteInfo.UvList.Add(ulUv);
  62. spriteInfo.UvList.Add(urUv);
  63. spriteInfo.UvList.Add(lrUv);
  64. SpriteAsset.SpriteInfoList.Add(spriteInfo);
  65. }
  66. }
  67. }
  68. }