using UnityEditor; using UnityEngine; using System.Collections; using System.Collections.Generic; [CustomEditor(typeof(SpriteAsset))] public class EditorSpriteAsste : Editor { #region 变量 private Vector2 ScrollPos; #endregion private void OnEnable() { } public override void OnInspectorGUI() { base.OnInspectorGUI(); if (GUILayout.Button("GetSpriteInfo")) { GetSpriteInfo(); } ScrollPos = GUILayout.BeginScrollView(ScrollPos, false, false); if (SpriteAsset.SpriteInfoList != null) { for (int i = 0; i < SpriteAsset.SpriteInfoList.Count; i++) { SpriteInfo spriteInfo = SpriteAsset.SpriteInfoList[i]; EditorGUILayout.ObjectField("", spriteInfo.Sprite, typeof(Sprite), false); GUILayout.BeginVertical(); EditorGUILayout.LabelField("Name : " + spriteInfo.Name); EditorGUILayout.LabelField("LowerLeft : " + spriteInfo.UvList[0]); EditorGUILayout.LabelField("UpperLeft : " + spriteInfo.UvList[1]); EditorGUILayout.LabelField("UpperRight : " + spriteInfo.UvList[2]); EditorGUILayout.LabelField("LowerRight : " + spriteInfo.UvList[3]); EditorGUILayout.LabelField(""); GUILayout.EndVertical(); } } GUILayout.EndScrollView(); } private void GetSpriteInfo() { SpriteAsset.SpriteInfoList = new List(); string path = AssetDatabase.GetAssetPath(SpriteAsset.Texture); Object[] objects = AssetDatabase.LoadAllAssetsAtPath(path); for (int i = 0; i < objects.Length; i++) { if (objects[i] is Sprite) { Sprite sprite = (Sprite) objects[i]; SpriteInfo spriteInfo = new SpriteInfo(); spriteInfo.Sprite = sprite; spriteInfo.Name = sprite.name; float width = SpriteAsset.Texture.width; float height = SpriteAsset.Texture.height; Vector2 llUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMin/height); Vector2 ulUv = new Vector2(sprite.rect.xMin/width, sprite.rect.yMax/height); Vector2 urUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMax/height); Vector2 lrUv = new Vector2(sprite.rect.xMax/width, sprite.rect.yMin/height); spriteInfo.UvList = new List(); spriteInfo.UvList.Add(llUv); spriteInfo.UvList.Add(ulUv); spriteInfo.UvList.Add(urUv); spriteInfo.UvList.Add(lrUv); SpriteAsset.SpriteInfoList.Add(spriteInfo); } } } }