Способы отслеживания кликов мыши на объекты

Общие вопросы о Unity3D

Способы отслеживания кликов мыши на объекты

Сообщение Lapka 02 июн 2023, 17:22

Всем привет!

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

Рисую на сцене игровую сетку для пошагового геймплея. Каждая клеточка это отдельный игровой объект. И я дошел до момента когда мне нужно отслеживать клики мышкой на клетку (читай на игровой объект). Правой, левой, колесиком, всем подряд в конечном итоге. Так же есть нюанс (куда без него), хочу чтобы клик засчитывался именно на клетку на которую наведен курсор, если я зажал мышкой курсор и отвел его на другую клетку клик не засчитывается.

Я нашел в справке Unity замечательную функцию OnMouseUpAsButton(), делает имеено то что нужно, запоминает коллайдер в момент нажатия "Down" и вызывается в момент отпускания "Up" только если коллайдер под курсором тот же. Но вот беда! Оно почему-то работает только для левой кнопки мыши, почитав на англоязычных формумах это подтвердилось.

Нашел подобную альтернативу считывания кликов
Синтаксис:
Используется csharp
if (Input.GetMouseButtonDown(0))

Но, ахтунг, эта штуковина не работает внутри OnMouseUpAsButton() или даже OnMouseDown(), её нужно класть либо в Update() с нужными условиями, либо в, что чуть лучше, OnMouseOver().
Но и там и там меня смущает что эта штука будет проверяться аж каждый кадр в секунду, звучит совсем не оптимально. Особенно если мы собираемся создавать достаточно комплексную систеу кликов.

Ну и наконец вопрос: Есть ли какой-то вариант заставить все таки OnMouseUpAsButton() работать для любой выбранной клавиши или хотябы клика. Или какая-то альтернатива чтобы не проверять события кликов прямо каждый кадр, а только при непосредственно событии. Опять же, находил попытки решения этого вопроса на англоязычных форумах, но выглядят они как-то страшно большими, уродливыми и слишком комплексными для такой простой вещи.

P.S. Уточню, что, формально, я задачу для себя решил и оно функционирует. Я запоминаю объект при клике "Down" и сравниваю с текущим при отпускания "Up". Но меня сильно смущает что такую простую вещь нужно реализовывать длинными окольными путями. Пробовал рейкаст, но и он кажется излишне сложным
Lapka
UNец
 
Сообщения: 1
Зарегистрирован: 02 июн 2023, 16:44

Re: Способы отслеживания кликов мыши на объекты

Сообщение Saltant 03 июн 2023, 21:34

Я на Google Play _https://play.google.com/store/apps/developer?id=Saltant
Аватара пользователя
Saltant
Адепт
 
Сообщения: 2236
Зарегистрирован: 09 окт 2018, 16:40
Откуда: Химки
  • Сайт


Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 8