Я пишу на CustomPropertyDrawer
и мне нужно EditorGUI.IntField
.
Я хотел бы, чтобы он показывал начальные нули, чтобы отобразить то, что будет показано в строке, используя ToString("0000")
.
Вот пример кода
public class ExampleComponent : MonoBehaviour
{
public Example example;
}
[Serializable]
public class Example
{
public int value;
}
[CustomPropertyDrawer(typeof(Example))]
public class ExampleDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
EditorGUI.BeginProperty(position, label, property);
var indent = EditorGUI.indentLevel;
EditorGUI.indentLevel = 0;
position = EditorGUI.PrefixLabel(position, GUIUtility.GetControlID(FocusType.Passive), label);
var value = property.FindPropertyRelative("value");
// I know I could use PropertyField in this case but this is just an example
// Here I want to be able to tell the IntField to use leading zeros
value.intValue = EditorGUI.IntField(position, value.intValue);
EditorGUI.indentLevel = indent;
EditorGUI.EndProperty();
}
}
Вместо, например, 1
Я бы хотел, чтобы инспектор отобразил 0001
.
Я бы хотел избежать использования "обычного" строкового поля, разбора int на строку с помощью ToString("0000")
, проверки ввода и синтаксического анализа его обратно до int, так как я почти уверен, что это уже покрыто IntField и должен быть способ сделать это, используя либо модифицированный GUIStyle
или GUILayoutOption
, либо что-то подобное.