更新
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
#if UNITY_EDITOR
|
||||
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace GraphicsCat
|
||||
{
|
||||
[CustomPropertyDrawer(typeof(LabelAttribute))]
|
||||
public class LabelDrawer : PropertyDrawer
|
||||
{
|
||||
private const float Spacing = 2f;
|
||||
|
||||
public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
|
||||
{
|
||||
float h0 = EditorGUIUtility.singleLineHeight;
|
||||
float h1 = EditorGUI.GetPropertyHeight(property, label, true);
|
||||
return h0 + Spacing + h1;
|
||||
}
|
||||
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
var attr = (LabelAttribute)attribute;
|
||||
|
||||
GUIStyle style = ResolveStyle(attr.Style);
|
||||
|
||||
Rect labelRect = new Rect(
|
||||
position.x,
|
||||
position.y,
|
||||
position.width,
|
||||
EditorGUIUtility.singleLineHeight
|
||||
);
|
||||
|
||||
EditorGUI.LabelField(labelRect, attr.Text, style);
|
||||
|
||||
Rect fieldRect = new Rect(
|
||||
position.x,
|
||||
position.y + EditorGUIUtility.singleLineHeight + Spacing,
|
||||
position.width,
|
||||
EditorGUI.GetPropertyHeight(property, label, true)
|
||||
);
|
||||
|
||||
EditorGUI.PropertyField(fieldRect, property, label, true);
|
||||
}
|
||||
|
||||
private GUIStyle ResolveStyle(LabelStyle style)
|
||||
{
|
||||
switch (style)
|
||||
{
|
||||
case LabelStyle.Bold:
|
||||
return EditorStyles.boldLabel;
|
||||
case LabelStyle.Italic:
|
||||
return EditorStyles.label.WithFontStyle(FontStyle.Italic);
|
||||
case LabelStyle.BoldItalic:
|
||||
return EditorStyles.label.WithFontStyle(FontStyle.BoldAndItalic);
|
||||
default:
|
||||
return EditorStyles.label;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static class GUIStyleExtensions
|
||||
{
|
||||
public static GUIStyle WithFontStyle(this GUIStyle style, FontStyle fontStyle)
|
||||
{
|
||||
GUIStyle s = new GUIStyle(style);
|
||||
s.fontStyle = fontStyle;
|
||||
return s;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user