Поля вылезают за пределы инспектора

Раздел, посвящённый всему, что связано с программированием для Редактора Юнити. Скрипты Редактора, Wizards и прочее.

Поля вылезают за пределы инспектора

Сообщение liget 04 мар 2016, 10:58

Всем привет,
Делаю себе простенький редактор базы предметов.
Все поля отрисовывают через EditorGUILayout.
Но в редакторе лейаут вылезает за пределы инспектора.
Я вот гифку сделал :)
https://i.gyazo.com/a884614cceac264efc6 ... 948b0e.gif

Не знаете как это пофиксить?

Код:
Синтаксис:
Используется csharp
public override void OnInspectorGUI()
    {
        //base.OnInspectorGUI();
       
        int[] itemID = database.GetAllIDs();
        EditorGUILayout.LabelField("Items Count: " + itemID.Length);
        EditorGUILayout.BeginVertical();
        for(int i = 0; i < itemID.Length; i++)
        {
            DrawItem(itemID[i]);
        }
        EditorGUILayout.EndVertical();

        // Add empty item
        if(GUILayout.Button("Add"))
        {
            database.CreateEmptyItem();
            AssetDatabase.SaveAssets();
        }

        // Save database
        if (GUILayout.Button("Save"))
        {
            AssetDatabase.SaveAssets();
        }

        EditorUtility.SetDirty(target);
    }

    void DrawItem(int id)
    {
        Item item = database.GetItem(id);
        if (item == null) return;

        // Icon
        item.sprite = (Sprite)EditorGUILayout.ObjectField(item.sprite, typeof(Sprite), false);

        // ID, Category and Type
        EditorGUILayout.BeginHorizontal();
        {
            EditorGUILayout.LabelField("ID: " + item.id);
            item.itemCategory = (EItemCategory)EditorGUILayout.EnumPopup(item.itemCategory);
            item.itemType = (EItemType)EditorGUILayout.EnumPopup(item.itemType);
        }
        EditorGUILayout.EndHorizontal();

        // Name and Description
        EditorGUILayout.LabelField("Name");
        item.name = EditorGUILayout.TextField(item.name);
        EditorGUILayout.Space();
        EditorGUILayout.LabelField("Description");
        item.description = EditorGUILayout.TextArea(item.description);

        // Parameters
        EditorGUILayout.BeginHorizontal();
        {
            item.value = EditorGUILayout.FloatField("Value", item.value);
            item.maxValue = EditorGUILayout.FloatField("Cap", item.maxValue);
            item.durability = EditorGUILayout.FloatField("Dur", item.durability);
        }
        EditorGUILayout.EndHorizontal();
       
        if (GUILayout.Button("Remove", GUILayout.MaxWidth(60f)))
        {
            database.RemoveItem(id);
        }
        EditorGUILayout.Space();
        EditorGUILayout.Separator();
    }
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23

Re: Поля вылезают за пределы инспектора

Сообщение liget 04 мар 2016, 14:58

В итоге обошел.

Если заменить вот эту конструкцию:
Синтаксис:
Используется csharp
item.value = EditorGUILayout.FloatField("Value", item.value);


На эту:
Синтаксис:
Используется csharp
EditorGUILayout.BeginHorizontal();
EditorGUILayout.LabelField("Value");
item.value = EditorGUILayout.FloatField(item.value);
EditorGUILayout.EndHorizontal();


То лейаут строится нормально и поля не вылезают.
liget
UNIт
 
Сообщения: 55
Зарегистрирован: 05 май 2012, 09:23


Вернуться в Editor

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2