Unity Inspector Custom Tabbar
效果类似于 Terrain Inspector 的顶层 Tabbar,不过按钮之间有间距,这个如果需要完全一样也可以改 GUIStyle 实现。
public class JZSpaceShipControllerEditor : Editor
{
/// <summary>
/// 飞船控制器编辑器 Tab 类别枚举
/// </summary>
enum JZSpaceShipControllerEditorTab
{
General,
Control,
Weapon
};
/// <summary>
/// Tab Button Inactive State 样式
/// </summary>
private static GUIStyle ToggleButtonStyleNormal = null;
/// <summary>
/// Tab Button Active State 样式
/// </summary>
private static GUIStyle ToggleButtonStyleToggled = null;
/// <summary>
/// 飞船控制器编辑器当前选中的 Tab
/// </summary>
private JZSpaceShipControllerEditorTab currentTab;
public override void OnInspectorGUI()
{
JZSpaceShipController spaceShipController =
(JZSpaceShipController) target;
if (ToggleButtonStyleNormal == null || ToggleButtonStyleToggled == null)
{
ToggleButtonStyleNormal = "Button";
ToggleButtonStyleToggled = new GUIStyle(ToggleButtonStyleNormal);
ToggleButtonStyleToggled.normal.background = ToggleButtonStyleToggled.active.background;
}
GUILayout.BeginHorizontal();
foreach (JZSpaceShipControllerEditorTab tab in Enum.GetValues(typeof(JZSpaceShipControllerEditorTab)))
{
if (GUILayout.Button(tab.ToString(),
currentTab == tab ? ToggleButtonStyleToggled : ToggleButtonStyleNormal))
{
currentTab = tab;
}
}
GUILayout.EndHorizontal();
switch (currentTab)
{
case JZSpaceShipControllerEditorTab.General:
{
EditorGUILayout.HelpBox("Space Ship Controller",MessageType.Info);
}
break;
case JZSpaceShipControllerEditorTab.Control:
{
}
break;
case JZSpaceShipControllerEditorTab.Weapon:
{
}
break;
}
}
}