Создаю свой атрибут, который должен подсвечиваться красным цветом, если пользователь не определил значения свойства в редакторе. И высвечивать предупреждение.
Нигде нету документации, или она заканчивается на этом моменте. Хотелось бы видеть дефолтные реализации. А то пальцем в небо методы перебираю.
Или есть атрибут, который выводил бы Warning под свойством в редакторе?
class WarningNotNullAttribute : PropertyAttribute
{
public string Desc;
public string color="red";
public WarningNotNullAttribute(string Desc)
{
this.Desc = Desc;
}
}
[CustomPropertyDrawer(typeof(WarningNotNullAttribute))]
public class IntAttributeDrawer : PropertyDrawer
{
string desc;
Color color;
protected virtual void Init(SerializedProperty property)
{
if (attribute != null)
{
WarningNotNullAttribute a = (WarningNotNullAttribute)attribute;
desc = a.Desc;
var c = System.Drawing.Color.FromName( a.color);
color.r = c.R;
color.g = c.G;
color.b = c.B;
}
}
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
if (property == null)
{
return;
}
Init(property);
EditorGUI.BeginProperty(position, label, property);
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
// Don't make child fields be indented
int indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
// Calculate rects
Rect pathRect = new Rect(position.x, position.y, position.width - 6, position.height);
/// вот тут через методы EditorGUI можно что-то рисовать. Но слишком не понятно.
//// если вызвать basse.OnGUI(); то там текст накладывается.
EditorGUI.(pathRect,v,FocusType.Passive);// TextField (pathRect, "not null",s);
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty();
}
}