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;
}
}
}
}
}