using System; using System.Linq; using UnityEditor; using UnityEngine; namespace MeshUtility { public static class TabBar { /// /// GUI.ToolbarButtonSize.FitToContentsも設定できる /// /// /// /// /// /// public static T OnGUI(T t, GUIStyle buttonStyle = null, GUI.ToolbarButtonSize buttonSize = GUI.ToolbarButtonSize.Fixed) where T : Enum { if (buttonStyle == null) { buttonStyle = "LargeButton"; } using (new EditorGUILayout.HorizontalScope()) { GUILayout.FlexibleSpace(); // タブを描画する var value = GUILayout.Toolbar((int)(object)t, TabCache.TabToggles, buttonStyle, buttonSize); GUILayout.FlexibleSpace(); return (T)(object)value; } } static class TabCache where T : Enum { private static GUIContent[] _tabToggles = null; public static GUIContent[] TabToggles { get { if (_tabToggles == null) { _tabToggles = System.Enum.GetNames(typeof(T)).Select(x => new GUIContent(x)).ToArray(); } return _tabToggles; } } } } }