Поместите изображение пользовательского интерфейса между двумя 2D-спрайтами в Unity

8

Я разрабатываю 2D-игру с Unity.

У меня есть два объекта спрайта, с использованием SpriteRenderer .

С новой системой пользовательского интерфейса, я хочу использовать ее для отображения изображения между двумя моими спрайтами. То есть мой первый спрайт имеет порядок сортировки 100, затем мой UI Image имеет порядок сортировки 200, а затем мой второй спрайт имеет порядок сортировки 300.

Это возможно?

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

оксид
источник

Ответы:

2

Это довольно просто сделать, Weexe на самом деле был на правильном пути, но не предоставил всю необходимую вам информацию.

Сначала создайте 2 спрайта и холст, содержащий ваше изображение между ними. Установите «Порядок в слое» на 2 и 0 для 2 спрайтов, которые вы хотите в фоновом или переднем плане. Более высокое число означает, что это впереди. Все элементы, включая пользовательский интерфейс, должны находиться на одном и том же уровне сортировки.

Теперь, нажмите на свой холст и установите режим рендеринга на World Space , это необходимо, чтобы вы фактически могли переключаться между спрайтами в мире. Потому что теперь у вас есть опция Сортировка слоя и Порядок в слое на вашем холсте. Установите Порядок в Слое на 1, а Сортировочный Слой - на 2 Спрайта !

Примечание. Если вы не можете найти свое изображение UI, обратите внимание, что оно на самом деле очень велико в сцене, вам придется значительно уменьшить его размер и расположить изображение (не холст). Если вы хотите найти его, просто уменьшите его, и вы начнете видеть его ( Совет: если на самом деле это маленькое изображение, вам следует активировать инструмент трансформации, чтобы вы знали, где он находится в данный момент).

Я просто воссоздал это за минуту с примерами изображений, определенно работает. Если у вас есть какие-либо вопросы, просто прокомментируйте. Я с радостью помогу.

CrystaX
источник
1

Вы должны использовать режим рендеринга "World Space". Ссылка: http://docs.unity3d.com/Manual/UICanvas.html.

Weexe
источник
В режиме рендеринга «Мировое пространство» изображение просто исчезает. Я не вижу этого в представлении игры.
Оксид
Его объяснение было довольно неполным. Как только режим рендеринга установлен на «Мировое пространство», вам нужно расположить изображение в вашей сцене. Ты сделал это?
Джоккинг
1
Этот ответ должен быть улучшен с дополнительной информацией. Почему следует использовать этот режим рендеринга? Какую проблему это решение? Есть ли другие шаги?
MichaelHouse
1

Я боролся с этим в течение часа, и я наконец нашел решение.

Я работал с пользовательским интерфейсом World Canvas и не мог заставить его работать правильно со спрайтами: сначала спрайты всегда были сверху, затем спрайты полностью исчезали, даже если изображение над ними не было полностью непрозрачным.

Так на основе: http://answers.unity3d.com/questions/832834/unity-2d-46b-ui-why-are-instantiated-prefab-sprite.html

Вы должны установить «Порядок в слое» вашего фонового спрайта «Sprite Renderer» на 0.
Затем установите «Порядок в слое» компонента UI Canvas
равным 1. Для спрайта переднего плана «Порядок в слое» следует установить значение 2 .
сортировочный слой по умолчанию для 3 -х элементов.

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

Маленький помощник Санты
источник