Я видел такое же поведение для элементов пользовательского интерфейса.
Я могу только предложить вам обходной путь. Это немного нелепо, но работает:
Просмотрите все элементы пользовательского интерфейса, особенно Text
и Image
, и отключите опцию RayCast Target
.
Это заставляет Курсор сидеть прямо над ними ... , но вы заметите свои Button
sтеперь не отвечают, и вы больше не можете взаимодействовать с ними.
Это происходит потому, что физическая система требует либо RayCastTarget, либо Collider
для запуска событий указателя, например, PointerEnter
, PointerDown
и т. Д.
Поэтому теперь добавьте BoxCollider
(, а не BoxCollider2D
!) К вашим Button
с и масштабируйте до нужного размера.Похоже, что вы используете VerticalLayoutGroup
, поэтому вы можете просто исправить положение BoxCollider
, установив RectTransform
по центру один раз (VerticalLayoutgroup
в любом случае будет усиливать привязку к левому верхнему углу).В моем случае BoxCollider
нужно с 0.8
и высотой 0.1
... а для z
я выбираю 0.01
, но оно может быть меньше, если вы хотите
Ура, теперь кнопки снова взаимодействуют, и у Курсора есть только его обычное расстояние + половина выбранного z
толщины BoxColliders
.
Так как фоновый куб имеет свой собственный BoxCollider
, в любом случае нам не нужно добавлять Colliders
для ScrollView
и пользовательского интерфейсапанелей.
Возможно, вам придется добавить их и для полос прокрутки, если они вам нужны!
Как уже говорилось, это больше похоже на быстрый обходной путь иможет не быть окончательным решением, так как всякий раз, когда изменяется размер Button
или ScrollRect
, вы должны также переработать эти жестко закодированные BoxCollider
dimesnions ...