Как сделать EditorGUI.IntField, показывающий ведущие нули в CustomPropertyDrawer - PullRequest
0 голосов
/ 05 ноября 2018

Я пишу на 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, либо что-то подобное.

...