Есть скрипт, который вешается на объект. В скрипте есть метод OnMouseDown(). Он срабатывает когда кликнишь по колайдеру объекта, но как определить какой именно клавишей мышки был произведен клик?
Там проблема что Update шлет в кажом кадре что я нажал, а мне надо один раз за нажатие. Можно конечно всякие флаги наставить. Но может есть более цивилизованные методы?
if (Input.GetMouseButtonDown(0)) это условие сработает не каждый апдеит, а только когда была нажата кнопка мыши. собственно это единственная функция инпута, отделать эти события.
Denis Gaydak: Она срабатывает в каждом Update, еще раз проверил. Если я буду даржать кнопку мыши они будет в каждом кадре заходить в if, а как раз этого не нужно было. Ну в общем я понял, что без флагов не обойтись!
if (Input.GetMouseButtonDown(0))
и
if (Input.GetMouseButton(0))
точно не путаете??
возьмите все же и унаследуйте просто от IPointerClickHandler скрипт и переопределите метод OnPointerClick
и все.
public override void OnPointerClick(EventSystems.PointerEventData eventData)
{
// и вот тут в объекте eventData у вас будет и айди кнопки и куда кликнуло и все что угодно, читай те документацию.
}
Да с новыми интерфеисами в евент классах очень много интересного.
Там и на перетаскиваемые объеты и выделение взглядом и подобное - очень удобно реализуется.
По сути наследуем парочку нужных интерфеисоф и переопределяем пару методов, делая объект кликабельным, перетаскиваемым и каких хотим еще))