Сценарий

Как и у многих из нас, у меня есть большой проект Unity, в который импортировано множество различных пакетов вместе с их ресурсами, текстурами и материалами. В результате мне всегда трудно найти нужный мне ресурс с помощью базового селектора объектов, поскольку он обычно показывает беспорядочный список ресурсов и материалов в проекте, многие из которых не имеют отношения к тому, что я ищу. .

Конечно, я мог бы начать вводить текст в поле поиска и сузить варианты, но делать это для каждого материала, который мне нужно было найти и назначить, быстро стало бы обременительным. Я также мог бы изменить вид, увеличив масштаб, но это не поможет с фильтрацией. К счастью, Unity предоставляет лучшее встроенное решение — окно Поиск.

Окно поиска

Окно Поиск в Unity — это мощный инструмент, который можно использовать для поиска ресурсов, объектов и других элементов в вашем проекте. Его можно открыть, нажав Ctrl_+K или выбрав Правка > Искать все.

Окно поиска разделено на пять отдельных разделов:

  1. Поле поиска — место для поиска вашего ресурса с помощью обычного текста или запроса.
  2. Сохраненные поисковые запросы. Доступ к сохраненным поисковым запросам среди пользователей и проектов.
  3. Область результатов. В этой области отображаются результаты поиска.
  4. Поставщик поиска — позволяет фильтровать результаты по проекту, иерархии, меню, настройкам или всем.
  5. Инспектор предварительного просмотра — обеспечивает просмотр свойств выбранного элемента.

Регулярные и специальные поиски

Окно поиска уже отлично работает для основных поисковых запросов, таких как названия искомых элементов. Но вы можете активировать эту функцию, используя токены поиска.

Токен поиска — это текстовая строка, которую можно использовать в поле поиска для поиска с использованием только определенного поставщика поиска.

Доступно несколько обычных токенов поиска:

  • Проект: поиск ресурсов проекта. Токен поиска — p:. Например, p:Player будет искать активы, соответствующие запросу «Игрок».
  • Иерархия: поиск игровых объектов на сцене. Токен поиска — h:. Например, h:Main Camera будет искать в текущей сцене игровые объекты, соответствующие термину «Основная камера».
  • Настройки: поиск по всем настройкам и предпочтениям проекта. Токен поиска — set:. Например, set:VFX найдет страницы настроек и настроек проекта, соответствующие термину «VFX».
  • Меню: поиск в главном меню Unity. Токен поиска — m:. Например, m:TextMesh Pro будет искать в главном меню Unity команды, содержащие «TextMesh Pro».

Эти токены поиска уже улучшают наши возможности поиска, но мы можем пойти еще дальше, используя специальных поставщиков поиска вместе с их токенами поиска:

  • Справка: поиск в справке по быстрому поиску. Токен поиска — ?. Например, ?asset будет искать записи справки по поиску, содержащие слово «Актив».
  • Калькулятор. Вычисляет математические выражения. Токен поиска – =. Например, =2*3+29/2 вычисляет ответ на выражение 2*3+29/2.
  • Файлы: поиск файлов. Токен поиска – find:. Например, find:Paint Mat ищет все пути к ресурсам, содержащие слова «краска» И слово «мат» (например: PaintBrush_Mat.mat, DryWallPainted_Mat.mat).
  • Статический API: находит и выполняет статические методы API. Токен поиска — #. Например, #Mesh ищет статические методы API, в названии которых есть слово «Mesh».
  • Пакеты: поиск в базе данных пакетов Unity. Токен поиска – pkg:. Например, pkg:vector ищет в базе данных пакетов Unity пакеты, соответствующие термину «вектор».
  • Хранилище ресурсов: поиск в хранилище ресурсов Unity. Токен поиска — store:. Например, store:texture ищет в Unity Asset Store активы, соответствующие термину «текстура».
  • Сохраненные запросы: поиск сохраненных запросов. Токен поиска — q:. Например, q:enemies выполняет поиск по всем сохраненным запросам, содержащим слово «враги».
  • Журналы: поиск в файле Editor.log. Токен поиска – log:. Например, log:cache ищет в файле Editor.log информацию, соответствующую «кэшу».

Объединение различных токенов поиска позволяет нам быстро и легко находить ресурсы, объекты и другие элементы, которые нам нужны в наших проектах Unity. Давайте оживим ситуацию, изменив окно по умолчанию, которое открывается при использовании селектора объектов, с скучного старого поиска на что-то более интересное!

Замена селектора объектов

Менее известная особенность Unity заключается в том, что вы можете использовать более расширенное окно Выбор объекта вместо стандартного Выбора объектов. Для этого перейдите в: Правка > Настройки > Поиск > Поисковые системы > Выбор объектов и выберите расширенный параметр.

Выбор расширенного средства выбора объектов откроет окно для всех вариантов выбора в редакторе, предоставляя вам больше контроля и удобство поиска.

Большой! Теперь мы можем максимально эффективно использовать токены поиска по всем нашим свойствам, представленным в редакторе.

Атрибут SearchContext

После внесения вышеуказанных изменений в полях наших объектов откроется окно более расширенного поиска. Однако мы можем улучшить эту функцию, указав дополнительный контекст поиска для наших полей с помощью атрибутаSearchContext.

Этот атрибут (SearchContext) можно прикрепить к полю объекта компонента, чтобы ObjectField использовал расширенное средство выбора объектов.

Он построен со следующими свойствами:

  • запрос — основная строка поиска для открытия окна.
  • флаги – необязательные флаги просмотра поиска для окна (например, GridView, ListView).
  • Идентификаторы поставщиков — необязательный список идентификаторов поставщиков поиска, разделенных запятыми, используемых для создания контекста поиска (например, asset, scene).
  • Instantiable Providers — конкретные типы, назначенные контексту поиска средства выбора объектов.

Несколько примеров доступны в документации Unity, но вот базовый, основанный на моем сценарии. Я хочу отфильтровать свой поиск только так, чтобы он включал только Material типы, которые где-то содержат текстGrid.

[SearchContext("t:Material Grid")]

Это работает! Но было бы лучше, если бы мы могли использовать представление сетки по умолчанию для визуализации этих материалов. Здесь мы можем использовать SearchViewFlags, а именно флаг GridView.

[SearchContext("t:Material Grid", SearchViewFlags.GridView)]

Теперь у нас есть представление в виде сетки для всех материалов, содержащих строку «Сетка». Мы можем пойти гораздо дальше, но в рамках данного руководства это уже дает нам гораздо более удобный интерфейс для работы, чем окно поиска по умолчанию.

Краткое содержание

Подводя итог изложенной информации:

  • Окно поиска в Unity — это мощный инструмент, который можно использовать для поиска ресурсов, объектов и других элементов в вашем проекте.
  • Токены поиска — это специальные ключевые слова, которые могут сузить результаты поиска. Например, токен p: можно использовать для поиска активов проекта.
  • Для поиска определенных типов элементов можно использовать специальные поисковые службы. Например, токен ? можно использовать для поиска записей справки быстрого поиска, а токен = можно использовать для вычисления математических выражений.
  • Вы также можете использовать атрибут SearchContext, чтобы указать дополнительный контекст поиска для ваших полей. Это позволяет фильтровать результаты по типу, поставщику или пользовательскому запросу.

Если вы нашли это полезным, не забудьте распространить информацию! Поделитесь этой статьей со своими друзьями и коллегами, которые используют Unity.