фильтр контента в ObjectField

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

фильтр контента в ObjectField

Сообщение Trifov 07 апр 2021, 17:17

через
Синтаксис:
Используется csharp
EditorGUILayout.ObjectField("", Brush, typeof(Texture2D), true, GUILayout.Width(120), GUILayout.Height(120));

выбираю тайлы для рисования, но помимо тайлов, он показывает все картинки что есть в папках... можно ли как-то уменьшить область видимости? например только до заданной папки?
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение 1max1 07 апр 2021, 17:57

выбираю тайлы для рисования

У тебя какая-то своя рисовалка? Если же встроенные инструменты https://habr.com/ru/post/412765/
можно ли как-то уменьшить область видимости? например только до заданной папки?

Если только ты не напишешь собственное окно со списком своих текстур https://docs.unity3d.com/Manual/editor- ... ndows.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: фильтр контента в ObjectField

Сообщение Trifov 12 апр 2021, 17:52

1max1 писал(а):У тебя какая-то своя рисовалка? Если же встроенные инструменты https://habr.com/ru/post/412765/

да. я там ставлю не только текстуры, а еще много всякой информации. это видел, но у меня игра не тайловая
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение Trifov 12 апр 2021, 17:57

Еще тут возник вопрос. пытаюсь сделать свое окно. но не получается прилепить кнопки к нижней границе окна. постоянно они скачут...
https://imgur.com/a/zfE7xXP
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение 1max1 12 апр 2021, 18:49

Trifov писал(а):Еще тут возник вопрос. пытаюсь сделать свое окно. но не получается прилепить кнопки к нижней границе окна. постоянно они скачут...
https://imgur.com/a/zfE7xXP

Дак это же самое веселое, тебе надо руками все прописывать))
Дружелюбный api от юнитеков для редактора, добро пожаловать...
Синтаксис:
Используется csharp
        var p = position;
        p.x = 2.0f;
        p.y = p.height - 22.0f;
        p.height = 20.0f;
        p.width -= 4.0f;

        GUI.enabled = true;
        GUI.Button(p, "asd");
        GUI.enabled = false;
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: фильтр контента в ObjectField

Сообщение Trifov 13 апр 2021, 12:04

Спасибо вам добрый человек. Вы в какой раз спасаете меня от часов поиска кой-то мелочи.
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение samana 13 апр 2021, 18:56

А что, вы не пользуетесь автоматическим выравниванием? Там и пустое место можно легко сделать.
Если взять за основу ваш скриншот с кнопками, то код построения выглядел бы как-то так
Синтаксис:
Используется csharp
private void OnGUI()
{
    GUILayout.BeginHorizontal();
    bool paintingClick = GUILayout.Button("Painting");
    bool notPaintingClick = GUILayout.Button("Not Painting");
    GUILayout.EndHorizontal();

    GUILayout.BeginHorizontal();
    bool savePresetsClick = GUILayout.Button("Save Presets");
    bool loadPresetsClick = GUILayout.Button("Load Presets");
    GUILayout.EndHorizontal();


    GUILayout.BeginVertical();
    GUILayout.FlexibleSpace(); // <---------------------- создаёт максимальное пустое пространство
    bool paintClick = GUILayout.Button("Paint");
    bool cleatListClick = GUILayout.Button("Cleat List");
    GUILayout.EndVertical();

    // здесь методы, которые будут выполняться при клике по кнопкам выше
    if(paintClick) onPaintingClick();
    if(notPaintingClick) onNotPaintingClick();
    if(savePresetsClick) onSavePresetsClick();
    if(loadPresetsClick) onLoadPresetsClick();
    if(clearListClick) onClearClick();
}
Аватара пользователя
samana
Адепт
 
Сообщения: 4539
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск
  • Сайт

Re: фильтр контента в ObjectField

Сообщение Trifov 14 апр 2021, 09:48

samana писал(а):А что, вы не пользуетесь автоматическим выравниванием? Там и пустое место можно легко сделать.
Если взять за основу ваш скриншот с кнопками, то код построения выглядел бы как-то так
Синтаксис:
Используется csharp
private void OnGUI()
{
    GUILayout.BeginHorizontal();
    bool paintingClick = GUILayout.Button("Painting");
    bool notPaintingClick = GUILayout.Button("Not Painting");
    GUILayout.EndHorizontal();

    GUILayout.BeginHorizontal();
    bool savePresetsClick = GUILayout.Button("Save Presets");
    bool loadPresetsClick = GUILayout.Button("Load Presets");
    GUILayout.EndHorizontal();


    GUILayout.BeginVertical();
    GUILayout.FlexibleSpace(); // <---------------------- создаёт максимальное пустое пространство
    bool paintClick = GUILayout.Button("Paint");
    bool cleatListClick = GUILayout.Button("Cleat List");
    GUILayout.EndVertical();

    // здесь методы, которые будут выполняться при клике по кнопкам выше
    if(paintClick) onPaintingClick();
    if(notPaintingClick) onNotPaintingClick();
    if(savePresetsClick) onSavePresetsClick();
    if(loadPresetsClick) onLoadPresetsClick();
    if(clearListClick) onClearClick();
}

автоматическое выравнивание и использую. но про флексибл спейс не знал. спасибо за такую чудесную вещь
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение Trifov 14 апр 2021, 10:29

и еще один вопросик.
использую EditorGUI.BeginChangeCheck(); для отслеживания изменений в полях. есть что-то подобное, но чтобы работало и в едиторе и в плей модах?
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение 1max1 14 апр 2021, 11:52

А разве в рантайме это не работает?
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: фильтр контента в ObjectField

Сообщение Trifov 14 апр 2021, 12:25

1max1 писал(а):А разве в рантайме это не работает?

он же часть UnityEditor. а компоненты из этой ветки не компилятся в релизный проект
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение 1max1 14 апр 2021, 13:11

Что-то я не понял, ты хочешь отслеживать изменение в инспекторе, но ведь инспектор тоже не входит в билд))
Есть метод https://docs.unity3d.com/ScriptReferenc ... idate.html
Но он тоже
Called in the editor only
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: фильтр контента в ObjectField

Сообщение Trifov 14 апр 2021, 14:50

1max1 писал(а):Что-то я не понял, ты хочешь отслеживать изменение в инспекторе, но ведь инспектор тоже не входит в билд))
Есть метод https://docs.unity3d.com/ScriptReferenc ... idate.html
Но он тоже
Called in the editor only

я сейчас использую эдитор чтобы строить уровни. тут появилась идея на будущее: дать игрокам возможность делать свои уровни. большинство вещей редактора перенеслись с EditorGUILayout на GUILayout. осталось разобраться можно ли сделать чтобы BeginChangeCheck() работал в рантайме? если нет: оборачивать его в #if и делать отдельную реализацию для рантайма
Trifov
UNец
 
Сообщения: 15
Зарегистрирован: 07 апр 2021, 11:43

Re: фильтр контента в ObjectField

Сообщение 1max1 14 апр 2021, 15:08

BeginChangeCheck работает как для EditorGUILayout так и для GUILayout, должен во всяком случае, или я все равно ничего не понял, ну да ладно...
Аватара пользователя
1max1
Адепт
 
Сообщения: 4550
Зарегистрирован: 28 июн 2017, 10:51

Re: фильтр контента в ObjectField

Сообщение samana 14 апр 2021, 18:25

Trifov писал(а):использую EditorGUI.BeginChangeCheck(); для отслеживания изменений в полях. есть что-то подобное, но чтобы работало и в едиторе и в плей модах?

Если вам нужно отслеживать изменения членов экземпляра класса, то используйте свойства.
EditorGUI.BeginChangeCheck это просто удобная штука для отслеживания изменений в инспекторе или окне. Она ни как напрямую не связана с тем, что в классе поменялись какие-то значения.
Аватара пользователя
samana
Адепт
 
Сообщения: 4539
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск
  • Сайт

След.

Вернуться в Почемучка

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

Сейчас этот форум просматривают: 1max1 и гости: 19