Инструменты UnityUI — MRTK3

UnityUI, возможно, не сразу приходит на ум, когда задумываешься о разработке трехмерных пользовательских интерфейсов. Однако с набором вспомогательных компонентов и служебных программа UnityUI позволяет создавать красивые и гибкие трехмерные пользовательские интерфейсы.

Unity UI example buttons and sliders

Совет

При разработке в UnityUI можно легко создать узкое место с точки зрения производительности. Перед созданием сложных макетов в UnityUI рекомендуется ознакомиться с этим руководством.

Пример

Ознакомьтесь с примером UnityUI для демонстрации различных компонентов, созданных для UnityUI.

Служебные компоненты пользовательского интерфейса

Указанные ниже компоненты помогают в отрисовке пользовательского интерфейса, но не являются отображаемыми графическими объектами.

ScaleMeshEffect

В компонентах UnityUI матрица unity_ObjectToWorld (или UNITY_MATRIX_M в URP) не является матрицей локального преобразования, на базе которой работает графический компонент, а относится к его родительскому холсту. Для многих эффектов шейдера в Graphics Tools должно быть известно масштабирование объектов. Для решения этой проблемы scaleMeshEffect.cs сохраняет сведения о масштабировании в атрибутах канала UV во время создания сетки пользовательского интерфейса.

Совет

Объект Canvas или CanvasRenderer в Graphics Tools при необходимости выдает запрос на добавление ScaleMeshEffect.cs.

RectMask2DFast

В UnityUI есть встроенный компонент RectMask2D. Обычно он используется для маскирования небольшого участка более крупной области. При маскирования большого числа объектов этот процесс может занять значительное время из-за нагрузки на ЦП. Чтобы избежать возникновения этого узкого места, в Graphics Tools есть компонент RectMask2DFast.

RectMask2DFast работает так же, как и RectMask2D, и рекомендуется в качестве замены. При возникновении проблемы с обновлением маски после добавления или удаления объектов RectMask2DFast может потребоваться вызвать обновление вручную, как показано ниже:

myRectMask2DFast.ForceClip = true;

Все шейдеры из каталогов Graphics Tools/Canvas/ и Graphics Tools/Standard Canvas поддерживают RectMask2D, RectMask2DFast и RoundedRectMask2D.

Примечание

Шейдеры из каталогов Graphics Tools/Canvas/ и Graphics Tools/Standard Canvasне поддерживают свойство Softness (Мягкость) в RectMask2D и RectMask2DFast..

RoundedRectMask2D

RoundedRectMask2D является производным от RectMask2DFast и функционирует аналогичным образом. Единственное различие заключается в том, что RoundedRectMask2D содержит значение радиуса угла для скругленных углов. Этот радиус можно выбрать для всех углов или каждого угла по отдельности.

RoundedRectMask2D example with two images

Примечание

Созданием экземпляров материалов должен управлять пользователь. Таким образом, на общие материалы может влиять RoundedRectMask2D.

Графические компоненты пользовательского интерфейса

Указанные ниже графические компоненты помогают добавить на холст третье измерение.

CanvasElementRoundedRect

Этот компонент процедурно создает трехмерную прямоугольную сетку, которая затем назначается потоку вершин холста. Обычно этот компонент используется для создания сеток основы с помощью шейдера из каталога Graphics Tools/Canvas/Backplate.

CanvasElementRoundedRect example backplate

CanvasElementBeveledRect

Как и CanvasElementRoundedRect, этот компонент процедурно создает трехмерный скругленный прямоугольник, но со скошенными краями. Как правило, этот компонент используется для создания сетки основы с помощью шейдера из каталога Graphics Tools/Canvas/Beveled.

CanvasElementBeveledRect example

CanvasElementMesh

Компонент MeshRenderer в Unity можно использовать для вывода трехмерных сеток в UnityUI, но он не учитывает некоторые параметры макета, которые предоставляет UnityUI. Для решения этих проблем с макетом есть компонент CanvasElementMesh.

Компонент CanvasElementMesh принимает входную сетку и преобразует ее в компонент Graphic.

CanvasElementMesh example with rocket

Важно!

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

Анимация

Для анимации свойств материалов UnityUI можно использовать классы Canvas MaterialAnimator... Дополнительные сведения см. в документации по анимации.

Для отображения макета пользовательского интерфейса в Graphics Tools есть несколько пунктов меню.

Привязки к углам и углы для привязок

Параметры Window > Graphics Tools > Canvas Anchors > Anchors to Corners (Окно > Graphics Tools > Привязки холста > Привязки к углам) и Window > Graphics Tools > Canvas Anchors > Corners to Anchors (Окно > Graphics Tools > Привязки холста > Углы для привязок) позволяют переводить отображение макета из системы закрепления в систему привязок (ограничений), свойственную для RectTransform, и обратно. Это может быть полезно при переходе между адаптивным и фиксированным режимами масштабирования макета.

См. также раздел