From 117938ecaece43c584ee74723a36d8dc2f2a4ae1 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 26 May 2021 19:27:38 +0800 Subject: +Tween Animation --- Assets/Editor/BuiltInResourcesWindow.cs | 226 ++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 Assets/Editor/BuiltInResourcesWindow.cs (limited to 'Assets/Editor/BuiltInResourcesWindow.cs') diff --git a/Assets/Editor/BuiltInResourcesWindow.cs b/Assets/Editor/BuiltInResourcesWindow.cs new file mode 100644 index 0000000..e603fec --- /dev/null +++ b/Assets/Editor/BuiltInResourcesWindow.cs @@ -0,0 +1,226 @@ +using System; +using UnityEditor; +using UnityEngine; +using System.Collections.Generic; + +public class BuiltInResourcesWindow : EditorWindow +{ + [MenuItem("Window/Built-in styles and icons")] + public static void ShowWindow() + { + BuiltInResourcesWindow w = (BuiltInResourcesWindow)EditorWindow.GetWindow(); + w.Show(); + } + + private struct Drawing + { + public Rect Rect; + public Action Draw; + } + + private List Drawings; + + private List _objects; + private float _scrollPos; + private float _maxY; + private Rect _oldPosition; + + private bool _showingStyles = true; + private bool _showingIcons = false; + + private string _search = ""; + + void OnGUI() + { + if (position.width != _oldPosition.width && Event.current.type == EventType.Layout) + { + Drawings = null; + _oldPosition = position; + } + + GUILayout.BeginHorizontal(); + + if (GUILayout.Toggle(_showingStyles, "Styles", EditorStyles.toolbarButton) != _showingStyles) + { + _showingStyles = !_showingStyles; + _showingIcons = !_showingStyles; + Drawings = null; + } + + if (GUILayout.Toggle(_showingIcons, "Icons", EditorStyles.toolbarButton) != _showingIcons) + { + _showingIcons = !_showingIcons; + _showingStyles = !_showingIcons; + Drawings = null; + } + + GUILayout.EndHorizontal(); + + string newSearch = GUILayout.TextField(_search); + if (newSearch != _search) + { + _search = newSearch; + Drawings = null; + } + + float top = 36; + + if (Drawings == null) + { + string lowerSearch = _search.ToLower(); + + Drawings = new List(); + + GUIContent inactiveText = new GUIContent("inactive"); + GUIContent activeText = new GUIContent("active"); + + float x = 5.0f; + float y = 5.0f; + + if (_showingStyles) + { + foreach (GUIStyle ss in GUI.skin.customStyles) + { + if (lowerSearch != "" && !ss.name.ToLower().Contains(lowerSearch)) + continue; + + GUIStyle thisStyle = ss; + + Drawing draw = new Drawing(); + + float width = Mathf.Max( + 100.0f, + GUI.skin.button.CalcSize(new GUIContent(ss.name)).x, + ss.CalcSize(inactiveText).x + ss.CalcSize(activeText).x + ) + 16.0f; + + float height = 60.0f; + + if (x + width > position.width - 32 && x > 5.0f) + { + x = 5.0f; + y += height + 10.0f; + } + + draw.Rect = new Rect(x, y, width, height); + + width -= 8.0f; + + draw.Draw = () => + { + if (GUILayout.Button(thisStyle.name, GUILayout.Width(width))) + CopyText("(GUIStyle)\"" + thisStyle.name + "\""); + + GUILayout.BeginHorizontal(); + GUILayout.Toggle(false, inactiveText, thisStyle, GUILayout.Width(width / 2)); + GUILayout.Toggle(false, activeText, thisStyle, GUILayout.Width(width / 2)); + GUILayout.EndHorizontal(); + }; + + x += width + 18.0f; + + Drawings.Add(draw); + } + } + else if (_showingIcons) + { + if (_objects == null) + { + _objects = new List(Resources.FindObjectsOfTypeAll(typeof(Texture))); + _objects.Sort((pA, pB) => System.String.Compare(pA.name, pB.name, System.StringComparison.OrdinalIgnoreCase)); + } + + float rowHeight = 0.0f; + + foreach (UnityEngine.Object oo in _objects) + { + Texture texture = (Texture)oo; + + if (texture.name == "") + continue; + + if (lowerSearch != "" && !texture.name.ToLower().Contains(lowerSearch)) + continue; + + Drawing draw = new Drawing(); + + float width = Mathf.Max( + GUI.skin.button.CalcSize(new GUIContent(texture.name)).x, + texture.width + ) + 8.0f; + + float height = texture.height + GUI.skin.button.CalcSize(new GUIContent(texture.name)).y + 8.0f; + + if (x + width > position.width - 32.0f) + { + x = 5.0f; + y += rowHeight + 8.0f; + rowHeight = 0.0f; + } + + draw.Rect = new Rect(x, y, width, height); + + rowHeight = Mathf.Max(rowHeight, height); + + width -= 8.0f; + + draw.Draw = () => + { + if (GUILayout.Button(texture.name, GUILayout.Width(width))) + CopyText("EditorGUIUtility.FindTexture( \"" + texture.name + "\" )"); + + Rect textureRect = GUILayoutUtility.GetRect(texture.width, texture.width, texture.height, texture.height, GUILayout.ExpandHeight(false), GUILayout.ExpandWidth(false)); + EditorGUI.DrawTextureTransparent(textureRect, texture); + }; + + x += width + 8.0f; + + Drawings.Add(draw); + } + } + + _maxY = y; + } + + Rect r = position; + r.y = top; + r.height -= r.y; + r.x = r.width - 16; + r.width = 16; + + float areaHeight = position.height - top; + _scrollPos = GUI.VerticalScrollbar(r, _scrollPos, areaHeight, 0.0f, _maxY); + + Rect area = new Rect(0, top, position.width - 16.0f, areaHeight); + GUILayout.BeginArea(area); + + int count = 0; + foreach (Drawing draw in Drawings) + { + Rect newRect = draw.Rect; + newRect.y -= _scrollPos; + + if (newRect.y + newRect.height > 0 && newRect.y < areaHeight) + { + GUILayout.BeginArea(newRect, GUI.skin.textField); + draw.Draw(); + GUILayout.EndArea(); + + count++; + } + } + + GUILayout.EndArea(); + } + + void CopyText(string pText) + { + TextEditor editor = new TextEditor(); + + //editor.content = new GUIContent(pText); // Unity 4.x code + editor.text = pText; // Unity 5.x code + + editor.SelectAll(); + editor.Copy(); + } +} \ No newline at end of file -- cgit v1.1-26-g67d0