В моей игре используется новая система пользовательского интерфейса Unity 5 с холстом. Сама игра может получать касания для стрельбы боеприпасами с помощью функций OnMouseDown() на нескольких игровых объектах с 2D-коллайдерами, указывающими области касания, и я могу настроить приоритеты различных областей касания, изменяя положение игровых объектов.z.
Однако с добавленным пользовательским интерфейсом любые прикосновения к элементам пользовательского интерфейса (кнопкам, панелям и т. д.) не только (если возможно) будут запускать элементы пользовательского интерфейса, но также могут проходить через элементы пользовательского интерфейса и вызывать сенсорные области. Это очень странно, когда вы нажимаете кнопку, не только кнопка нажимается, но и запускает действие стрельбы за (визуально) «слоем пользовательского интерфейса».
Я могу придумать один из способов — добавить коллайдер к элементам пользовательского интерфейса, затем во время выполнения изменить его положение и размер в мировом пространстве и настроить его значение position.z, чтобы поглощать все касания, которые есть в пользовательском интерфейсе. Однако это выглядит очень некрасиво и небезопасно.
Есть ли какой-нибудь элегантный способ позволить всем элементам пользовательского интерфейса (в основном панелям) поглощать прикосновения? Спасибо!