// EditorGUI.DrawTextureTransparent(new Rect(25, 0, 100f, 100f)) void OnGUI() { EditorGUILayout.BeginHorizontal(); createGroupName = EditorGUILayout.TextField(createGroupName); if (GUILayout.Button("AddSpriteGroup", GUILayout.Width(110f))) { if (spriteDatabase.KeyOverlapCheck(createGroupName)) { int i = spriteDatabase.AddSpriteGroup(createGroupName); if (i != -1) { selectSpriteGroupIndex = i; GetSpriteGroup(); } } else { EditorUtility.DisplayDialog("Error", "Group Name Is Already Exists", "ok"); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); createSpriteSetName = EditorGUILayout.TextField(createSpriteSetName); if (GUILayout.Button("AddSpriteSet", GUILayout.Width(110f))) { if (spriteDatabase.FindListFromIndex(selectSpriteGroupIndex) != null) { if (spriteDatabase.SpriteSetNameOverlapCheck(selectSpriteGroupIndex, createSpriteSetName)) { int i = spriteDatabase.AddSpriteSet(selectSpriteGroupIndex, new SpriteDatabase.SpriteSet(createSpriteSetName)); selectSpriteSetIndex = i == -1 ? selectSpriteSetIndex : i; GetNames(); } else { EditorUtility.DisplayDialog("Error", "Group Name Is Already Exists", "ok"); } } else { EditorUtility.DisplayDialog("Error", "List is null", "ok"); } } EditorGUILayout.EndHorizontal(); // GUILayout.Label("ViewImageSize"); // EditorGUILayout.BeginHorizontal(); // // GUILayout.Label("Width",GUILayout.Width(50f)); // // imageWidth = EditorGUILayout.IntField(imageWidth,GUILayout.Width(100f)); // // GUILayout.Label("Height",GUILayout.Width(50f)); // // imageHeight = EditorGUILayout.IntField(imageHeight,GUILayout.Width(100f)); // EditorGUILayout.EndHorizontal(); // spriteListArea = new Rect(position.width - 150f,0f,150f,250f); // GUILayout.BeginArea(spriteListArea); selectSpriteGroupIndex = EditorGUILayout.Popup("Group", selectSpriteGroupIndex, spriteGroup); if (prevSpriteGroupIndex != selectSpriteGroupIndex) { SpriteGroupSelect(); selectSpriteSetIndex = 0; GetNames(); GetSprites(); } if (names != null && names.Length != 0) { selectSpriteSetIndex = EditorGUILayout.Popup("SpriteSet", selectSpriteSetIndex, names); GetSprites(); } GUILayout.BeginVertical("box"); UnityEngine.Object[] objects = DropAreaGUI(); spritesScrollPos = GUILayout.BeginScrollView(spritesScrollPos); if (objects != null) { List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex); if (list != null) { if (list.Count > selectSpriteSetIndex) { if (list[selectSpriteSetIndex].sprites == null) { list[selectSpriteSetIndex].sprites = new Sprite[objects.Length]; } else { Array.Resize(ref list[selectSpriteSetIndex].sprites, objects.Length); } Type type = objects[0].GetType(); if (type == typeof(Texture2D)) { for (int i = 0; i < objects.Length; ++i) { string path = AssetDatabase.GetAssetPath(objects[i]); list[selectSpriteSetIndex].sprites[i] = AssetDatabase.LoadAssetAtPath(path, typeof(Sprite)) as Sprite; } } else if (type == typeof(Sprite)) { for (int i = 0; i < objects.Length; ++i) { list[selectSpriteSetIndex].sprites[i] = objects[i] as Sprite; } } spriteDatabase.SaveDirty(); } else { EditorUtility.DisplayDialog("Error", "List is null", "ok"); } } else { EditorUtility.DisplayDialog("Error", "List is null", "ok"); } } if (sprites != null) { for (int i = 0; i < sprites.Length; ++i) { sprites[i] = EditorGUILayout.ObjectField(sprites[i], typeof(Sprite), true) as Sprite; } } GUILayout.EndScrollView(); GUILayout.BeginHorizontal(); if (GUILayout.Button("DeleteSpriteSet")) { int i = spriteDatabase.DeleteSpriteSet(selectSpriteGroupIndex, selectSpriteSetIndex); if (i != -2) { selectSpriteSetIndex = i == -1 ? 0 : i; GetSprites(); GetNames(); } else { EditorUtility.DisplayDialog("Error", "List is Empty", "ok"); } } if (GUILayout.Button("DeleteGroup")) { int i = spriteDatabase.DeleteSpriteGroup(selectSpriteGroupIndex); if (i != -2) { selectSpriteGroupIndex = i == -1 ? 0 : i; GetSprites(); GetNames(); GetSpriteGroup(); } else { EditorUtility.DisplayDialog("Error", "List is Empty", "ok"); } } GUILayout.EndHorizontal(); GUILayout.EndVertical(); GUILayout.BeginHorizontal(); if (GUILayout.Button("Add Sprite")) { List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex); if (list != null) { if (list.Count > selectSpriteSetIndex) { if (list[selectSpriteSetIndex].sprites == null) { list[selectSpriteSetIndex].sprites = new Sprite[1]; } else { Array.Resize(ref list[selectSpriteSetIndex].sprites, list[selectSpriteSetIndex].sprites.Length + 1); } EditorUtility.SetDirty(spriteDatabase); GetSprites(); } else if (list.Count == 0) { EditorUtility.DisplayDialog("Error", "List is Empty", "ok"); } } else { EditorUtility.DisplayDialog("Error", "List is null", "ok"); } } if (GUILayout.Button("Delete Sprite")) { List <SpriteDatabase.SpriteSet> list = spriteDatabase.FindListFromIndex(selectSpriteGroupIndex); if (list != null) { if (list.Count > selectSpriteSetIndex) { if (list[selectSpriteSetIndex].sprites == null) { EditorUtility.DisplayDialog("Error", "Array is null", "ok"); } else if (list[selectSpriteSetIndex].sprites.Length == 0) { EditorUtility.DisplayDialog("Error", "Array is Empty", "ok"); } else { Array.Resize(ref list[selectSpriteSetIndex].sprites, list[selectSpriteSetIndex].sprites.Length - 1); EditorUtility.SetDirty(spriteDatabase); GetSprites(); } } else if (list.Count == 0) { EditorUtility.DisplayDialog("Error", "List is Empty", "ok"); } } else { EditorUtility.DisplayDialog("Error", "List is null", "ok"); } } GUILayout.EndHorizontal(); GUILayout.Space(10f); GUILayout.Label("TextureSplit"); splitName = EditorGUILayout.TextField("SpriteSetName", splitName); splitGroup = EditorGUILayout.Popup("Group", splitGroup, spriteGroup); splitSprite = EditorGUILayout.ObjectField(splitSprite, typeof(Sprite), false) as Sprite; GUILayout.BeginHorizontal(); GUILayout.Label("Tiles"); GUILayout.Label("X"); splitX = EditorGUILayout.IntField(splitX); GUILayout.Label("Y"); splitY = EditorGUILayout.IntField(splitY); GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); GUILayout.Label("Pivot"); GUILayout.Label("X"); splitPivot.x = EditorGUILayout.FloatField(splitPivot.x); GUILayout.Label("Y"); splitPivot.y = EditorGUILayout.FloatField(splitPivot.y); GUILayout.EndHorizontal(); if (GUILayout.Button("Split")) { if (splitName == "") { EditorUtility.DisplayDialog("Error", "Name is Empty", "ok"); } else if (spriteDatabase.FindListFromIndex(splitGroup) == null) { EditorUtility.DisplayDialog("Error", "Group Does Not Exist", "ok"); } else { if (spriteDatabase.SpriteSetNameOverlapCheck(splitGroup, splitName)) { UnityEngine.Object[] objs = SetMultiSprite(splitSprite.texture, splitX, splitY, splitPivot); SpriteDatabase.SpriteSet sprSet = new SpriteDatabase.SpriteSet(); sprSet.name = splitName; sprSet.sprites = new Sprite[objs.Length - 1]; for (int i = 1; i < objs.Length; ++i) { sprSet.sprites[i - 1] = objs[i] as Sprite; } selectSpriteGroupIndex = splitGroup; int j = spriteDatabase.AddSpriteSet(splitGroup, sprSet); if (j != -1) { selectSpriteSetIndex = j; GetNames(); GetSprites(); } } else { EditorUtility.DisplayDialog("Error", "Name Already Exists In That Group", "ok"); } } } // GUILayout.EndArea(); }