Unity2D накладывает несколько холстов

У меня есть два холста, настроенных для моего проекта, один для фона, а другой для размещения элементов пользовательского интерфейса переднего плана. Изначально они были настроены на мировое пространство, и у меня не было проблем, но сейчас я оптимизирую свою игру, я должен изменить пространство, чтобы они адаптировались к мобильным телефонам. Как я могу спроектировать холст так, чтобы один работал на заднем плане, а другой - на переднем плане? Я пытался изменить z-pos и другие быстрые исправления, которые я нашел в Интернете, но ни одно из них не сработало.


person Mattattack    schedule 26.11.2018    source источник
comment
Если вы установите режим рендеринга холста на Пространство экрана — наложение, появится число с именем Порядок сортировки. Большее значение выводит элементы на передний план, меньшее — на задний план.   -  person trollingchar    schedule 26.11.2018
comment
Пробовал это, похоже, у меня не сработало, если только порядок сортировки не может быть меньше единицы? Хотя ошибки не выдавал.   -  person Mattattack    schedule 26.11.2018
comment
Я проверил это, и все значения работают как положено, даже ниже нуля. Как это не работает, дает неправильный порядок элементов? Не могли бы вы добавить скриншоты полотен и чего вы от них ожидаете? И я забыл сказать, оверлейные холсты всегда находятся над миром и спрайтами, если фон на холсте, он их перекроет, возможно, это ваша проблема.   -  person trollingchar    schedule 26.11.2018
comment
Моя проблема в том, что мне нужен холст за спрайтами и другими игровыми объектами и т. Д. есть ли способ сделать это без использования мирового холста?   -  person Mattattack    schedule 26.11.2018
comment
Если ваш фон представляет собой одно изображение, вы можете использовать спрайт   -  person trollingchar    schedule 26.11.2018
comment
Мой фон — это текстовый пользовательский интерфейс, который нужно изменить, и он должен стоять за всеми спрайтами.   -  person Mattattack    schedule 26.11.2018
comment
Вы можете установить режим рендеринга холста на Экранное пространство - камера, добавить для нее другую камеру в сцену, настроить маски отбраковки ваших камер, возможно, добавив слой для фонового пользовательского интерфейса, настроить глубину камеры, а затем установить режим очистки основной камеры на Не очищать. Я не вижу другого решения, кроме этого.   -  person trollingchar    schedule 26.11.2018
comment
Я не уверен, но думаю, что для этого можно использовать порядок сортировки. .. afaik меньшие значения рисуются первыми, большие значения рисуются сверху. Или, может быть, поможет эта ветка   -  person derHugo    schedule 26.11.2018
comment
@derHugo Я считаю, что он заказывает только холст, но мне нужно, чтобы он был заказан ниже, чем спрайты.   -  person Mattattack    schedule 27.11.2018
comment
@trollingchar ты можешь объяснить это немного подробнее? Я изо всех сил пытаюсь следовать. Благодарю вас!   -  person Mattattack    schedule 27.11.2018
comment
@Mattattack Я не понимаю вас ... Я думал, вы ищете, как отсортировать два холста ... один передний план и один фоновый холст?   -  person derHugo    schedule 27.11.2018
comment
@Mattattack, я создал чат, где мы можем обсудить вашу проблему, а не в комментариях, chat.stackoverflow.com/rooms/184307/.   -  person trollingchar    schedule 27.11.2018


Ответы (1)


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

Идея состоит в том, чтобы рендерить сначала только фон одной камерой, а потом уже все рендерить другой.

Для этого нам следует:

  • Добавьте слой для фонового холста. Измените слой фонового холста и дочерних элементов на этот слой.

Чтобы добавить слой, выберите любой игровой объект, и в верхней части инспектора вы увидите:

введите здесь описание изображения

Щелкните раскрывающийся список с надписью «Слой» и выберите «Добавить слой». Затем создайте новый слой и дайте ему имя:

введите здесь описание изображения

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

  • Отключите этот слой в маске отсечения основной камеры.

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

  • Добавьте камеру для рендеринга фона пользовательского интерфейса.

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

  • Установите режим фонового холста на Экранное пространство - Камера и перетащите только что созданную камеру в поле "Визуализация камеры" там.

Теперь это должно работать.

person trollingchar    schedule 29.11.2018