NGUI не может вывести спрайт на передний план в Unity

У меня есть виджет спрайта в NGUI, и его нельзя вывести на передний план, какую бы глубину я ни изменил в редакторе:

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

Обратите внимание, что оранжевая панель представляет собой прокрутку NGUI.

Вот настройка инспектора спрайта, которую я хочу установить на самый передний план:

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

А вот настройка инспектора, перекрывающая спрайт выше, который я хочу сделать перед ним.

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

А вот и настройка BottomPanel

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


person armnotstrong    schedule 17.06.2017    source источник
comment
Я давно пользуюсь NGUI, но думаю, что смогу помочь и в этом. Можете ли вы сделать скриншот Инспектора объекта, который находится перед ним, а затем опубликовать его. Теперь сделайте снимок экрана Inspector объекта, который вы хотите отправить на передний план, а затем опубликуйте его. Я просто хочу сравнить их настройки.   -  person Programmer    schedule 17.06.2017
comment
@Программист, просто подожди, пока я это сделаю :D   -  person armnotstrong    schedule 17.06.2017
comment
@Programmer вставил скриншот настроек инспектора   -  person armnotstrong    schedule 17.06.2017
comment
Это интересно, потому что должно работать с текущими настройками. Измените ось z объекта Sprite (1) на 4. Дайте мне знать, если есть какие-либо изменения. Когда я говорю ось Z, я имею в виду положение (P), не (R) или (S).   -  person Programmer    schedule 17.06.2017
comment
Не повезло с осью Z, но если я перетащу фон из BottomPanel в иерархию, все будет работать :(   -  person armnotstrong    schedule 17.06.2017
comment
И я добавил настройки инспектора BottomPanel   -  person armnotstrong    schedule 17.06.2017
comment
На панели пользовательского интерфейса написано Порядок сортировки... Можете ли вы проверить порядок сортировки? Скажи мне, что происходит.   -  person Programmer    schedule 17.06.2017
comment
@Programmer Там тоже не повезло, но я покопаюсь в этом и дам вам знать.   -  person armnotstrong    schedule 17.06.2017
comment
Проверьте ответ, который я оставил. Это должно решить вашу проблему. Если нет, дайте мне знать, и я удалю его.   -  person Programmer    schedule 17.06.2017
comment
Привет, если бы я поместил спрайт под панелью, то я мог бы заставить все работать, просто установив глубину виджета NGUI, но поскольку я действительно хочу сделать, это поместить спрайт перед всем, т.е. я хочу на самом деле поставить спрайт в представлении прокрутки, но поскольку в представлении прокрутки есть своего рода маска, поэтому, когда я перетаскиваю этот спрайт, он будет замаскирован. И я попробовал ответ, который вы даете, да, это сработало, даже без установки RenderQ, но это не то, что я хочу, или если есть какой-либо способ сделать исключение спрайта из маски прокрутки, можно решить мою проблему тоже   -  person armnotstrong    schedule 17.06.2017
comment
Привет @Programmer. Я тоже это понял, хотя я не совсем понял, что происходит, я решаю это, добавляя еще одну панель, устанавливаю панель перед исходной и делаю спрайт дочерним элементом новой панели и эта ссылка помогает, возможно, это все основные проблемы, которые мне нужно решить сегодня, спасибо за уделите время и хороших выходных :D   -  person armnotstrong    schedule 17.06.2017
comment
Я думал в вашем вопросе, что вы хотели поместить Sprite (1) только поверх фона. Вот что должен делать ответ, который я дал. Я не знаю о маскировке и других вещах. Если вы решили это, вы должны дать свой собственный ответ. Меня не будет некоторое время, но я проверю ваш ответ, когда вернусь.   -  person Programmer    schedule 17.06.2017


Ответы (2)


Я, наконец, решить эту проблему с помощью

  • Добавить еще одну панель
  • Установка добавленной панели перед исходной
  • Сделайте спрайт дочерним элементом только что добавленной панели

И окончательная иерархия выглядит так:

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

И эта ссылка форума NGUI помогает

цитируется здесь:

Свойство «Глубина» используется для определения порядка прорисовки виджетов на одной панели, использующих один и тот же атлас. Если вы используете разные атласы или метки с использованием динамического шрифта, переместите виджеты вперед по оси Z преобразования, переместив их ближе к камере (-Z). Если вы используете разные панели, отрегулируйте преобразование панели, которую вы хотите вывести на передний план, на более низкое отрицательное значение Z (-Z). Я настоятельно рекомендую придерживаться одного атласа, если вы можете с ним справиться, это значительно облегчит вашу жизнь.

И я делаю видео на YouTube, чтобы объяснить, чего я уже достиг.

person armnotstrong    schedule 17.06.2017

У меня все выглядит хорошо, но, кажется, это не работает для вас. Есть еще один обходной путь.

На UIPanel измените Render Q на Explicit, затем используйте ось Z для сортировки вашего UISprite. Я имею в виду позицию z (P), а не (R) или (S)

Например, измените ось z объекта «Спрайт (1)» на 2, затем измените ось z «фонового» объекта на 1. Если это не сработает, измените значения.

Убедитесь, что спрайт находится под панелью.

person Programmer    schedule 17.06.2017