Изменить порядок сортировки 2D GameObjects
Чтобы поместить 2D и GameObjects друг за другом или перед собой в сцене, измените их порядок сортировки.
Для получения дополнительной информации о критериях, используемых Unity для упорядочения спрайтов и других 2D GameObjects, см. 2D порядок отображения.
Нижеследующее относится к спрайтам, плиткам и формам спрайтов.
Расположите 2D GameObjects слоями
Вы можете использовать слои для представления различных глубин, потому что они отделены и Unity отображает их в порядке. Используйте Слой сортировки и Порядок в слое свойств компонента рендерера GameObject.
По умолчанию все 2D GameObjects находятся на слое сортировки По умолчанию и имеют одинаковое значение Порядок в слое, равное 0. Чтобы переместить 2D GameObjects на другой слой, выполните следующие действия:
В главном меню выберите Изменить > Project Настройки > Метки и слои.
-
В разделе Слои сортировки выберите кнопку Добавить (+) для добавления нового слоя сортировки.
По умолчанию, Unity добавляет новый слой в нижней части списка. Unity отображает слои в порядке от верхнего к нижнему, так что новый слой теперь является передним слоем в сцене.
Выберите 2D GameObject, который вы хотите добавить в слой.
В разделе Дополнительные настройки компонента рендерера, например Sprite Renderer, установите свойство Sorting Layer на новый слой.
Чтобы создать подслои, используйте Порядок в слое свойства. Unity рендеринг подслоев в числовом порядке, так что более низкие значения отображаются за более высокими значениями. Например, Порядок в слое значение –1 отображается за спрайтом с Порядок в слое значение 3.
Чтобы избежать смешивания групп спрайтов на одних и тех же слоях и подслоях, см. Предотвращение смешивания 2D GameObjects в слоях сортировки.
Установить порядок в слое и подслое
Чтобы установить порядок 2D GameObjects в слое и подслое сортировки, используйте один из следующих подходов:
- Изменить очередь рендеринга материалов.
- Изменить, как Unity рассчитывает расстояние.
Изменение очереди рендеринга материалов
Чтобы управлять порядком в подслое, дайте GameObjects различные материалы с разными значениями очереди рендеринга. По умолчанию, все материалы 2D имеют значение очереди рендеринга 3000.
Чтобы изменить очередь отображения, выполните следующие действия:
- Выберите GameObject.
- В окне Inspector откройте окно Материал Inspector.
- Установите Render Queue на другое значение. Например, используйте
3000+1для рендеринга этого материала после стандартных материалов 2D.
Дополнительные сведения см. в Поведение очередей отображения и сортировки.
Изменить, как Unity рассчитывает расстояние
В слое сортировки, подслое и очереди рендеринга Unity определяет порядок 2D GameObjects путем вычисления их расстояния от камеры.
По умолчанию, Unity рассчитывает расстояние на основе Прогноз свойства камеры. Установите его на одно из следующих значений:
- Ортографический: Unity использует расстояние от плоскости камеры до центра GameObject. Чтобы управлять порядком отображения, увеличите или уменьшите положение z в компоненте Transform GameObjects.
- Перспектива: Unity использует расстояние от точки камеры до центра GameObject. Чтобы управлять порядком отображения, увеличьте или уменьшите z-положение в Transform компоненте GameObjects, или переместите GameObjects в сторону от или к углам экрана.
Чтобы изменить расчет расстояния без изменения проекции камеры, используйте свойство Transparency Sort Mode актива рендерера 2D.
Примечание: Если вы используете Built-in Render Pipeline, свойство Режим сортировки прозрачности находится в окне Настройки графики.
Используйте позицию 2D для расчета расстояния
Чтобы использовать позицию 2D из GameObjects для вычисления расстояния, используйте пользовательскую ось.
Выполните следующие действия:
- Установите Режим сортировки прозрачности на Настраиваемая ось.
- Установите Transparency Sort Axis на пользовательскую ось, которую вы хотите использовать.
Например:
- Используйте вертикальную ось (0, 1, 0), так что чем выше GameObject в сцене, тем дальше он находится. Это полезно для игр сверху вниз.
- Используйте диагональную ось (1, 1, 0), так что чем ближе GameObject находится в сцене, тем дальше он находится. Это полезно для изометрических игр.