Краткий ответ
Это происходит потому, что вы оба используете абсолютное позиционирование в вашем Rect Transform и неправильно вкладываете Back / Main Menu /? кнопки внутри панели в иерархии сцен (крайняя левая панель).
В зависимости от ваших конкретных потребностей c, я бы либо сделал Nav дочерним элементом панели, если вы хотите, чтобы ваши кнопки Nav находились внутри панели. или измените предустановки привязки Rect Transform для Nav на что-то вроде «Stretch Top», а не «Center Center».
Как правило, вы хотите использовать «stretch» с размерами, которые зависят от экрана (например, « эта область навигации всегда должна охватывать ширину экрана "). Для вещей, которые не зависят от экрана (например, «эта кнопка навигации всегда должна быть на 5 пикселей ниже верхней части экрана»), можно использовать ручные значения положения.
Длинный ответ
В Unity есть два основных способа позиционирования под капотом:
Якоря
Якоря по существу определяют отношение элемента к его родителю. Некоторые примеры:
- Якорь по умолчанию Min: (.5, .5), Max: (.5, .5) означает, что позиция элемента будет вычислена из x-center и y -center родительского элемента.
- Якорь Min: (0, .5), Max: (0, .5) означает, что позиция элемента будет вычислена из средней точки левого края родительского элемента.
- Якорь Min: (1, 1), Max: (1, 1) означает, что позиция элемента будет вычислена из верхнего правого угла родителя.
Примечание что все приведенные в качестве примера якоря до сих пор имели одинаковые минимальные и максимальные значения, в результате чего якорь представляет собой одну точку. Если вы установите минимальное и максимальное значения по-разному, вместо этого будет создан якорный «ящик», который элемент будет масштабировать для заполнения. Некоторые примеры этого:
- Якорь Min: (0, 0), Max: (1, 1) означает, что элемент будет масштабироваться так же, как родительский.
- Якорь Min: (0, 0), Max: (.5, .5) означает, что элемент будет масштабироваться для заполнения нижней левой четверти родительского элемента.
- Якорь Min : (0, 0), Max: (1, .5) означает, что элемент будет масштабироваться до заполнения нижней половины родительского элемента.
Смещение пикселей
Теперь, когда мы понять якоря, что такое смещение пикселей? По сути, они представляют собой абсолютные позиционные смещения пикселей от краев якорей. Например:
- Якорь Min: (0, 0), Max: (.5, .5) и смещение пикселей Top: 40 Right: 10 означает, что элемент будет масштабирован для заполнения нижнюю левую четверть родительского элемента, а затем дополнительно масштабируйте, чтобы заполнить 40 пикселей выше вертикальной средней точки экрана и 10 пикселей справа от горизонтальной средней точки экрана.
Эй, я нет смещения пикселей!
Да, да, но на панели инспектора Unity для них используется другая терминология в зависимости от того, как настроены ваши якоря. «Вверху», «Влево», «Вправо» и «Вниз» вы увидите только в том случае, если ваши якоря настроены на создание прямоугольника, а не точки. В противном случае вы можете увидеть такие поля, как «Pos X», «Pos Y», «Width» или «Height». Однако эти поля являются просто концептуальными абстракциями для смещений. Например, установка «Ширина» на 100 эквивалентна установке «Влево» на -50 и «Направо» на 50 и т. Д.
Отлично, как мне их использовать?
Как правило, используйте якорные блоки для создания адаптивных макетов, а затем используйте смещения внутри этих макетов для точной настройки позиций.