Страница 1 из 2
Кнопка произвольной формы
Добавлено:
25 апр 2017, 16:30
DanilaDIV
Добрый день. Хочу сделать UI кнопку произвольной формы взяв за основу(границы) текстуру. Хотел повесить на нее колайдер но скрипт не видит OnMouseDown. Какие есть варианты? Из текстур будет составляться общая картинка по которой можно будет наживать на отдельные элементы поэтому стандартная прямоугольная кнопка не подходит.
Re: Кнопка произвольной формы
Добавлено:
25 апр 2017, 19:50
ilka
На UI кнопку вы хотите повесить коллайдер чтобы обработать нажатие на нее через OnMouseDown?
Re: Кнопка произвольной формы
Добавлено:
25 апр 2017, 20:12
samana
Кажется это, если правильно помню. Здесь частенько задают подобный вопрос
https://docs.unity3d.com/ScriptReferenc ... shold.html
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 08:00
DanilaDIV
Код theButton.alphaHitTestMinimumThreshold = 0.5f; проверяет альфа канал на прозрачность. И в каком месте его вписать? В Update при срабатывании Input.GetMouseButtonDown(0) ? Тогда я не знаю как получить имя GUI объекта у которого проверять альфа канал который находиться под мышью в момент когда нажали. Пускать луч можно только на 3дмодели. И не вариант использовать этот код, кнопки то не прозрачные и соединяются между собой.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 08:36
DanilaDIV
ilka писал(а):На UI кнопку вы хотите повесить коллайдер чтобы обработать нажатие на нее через OnMouseDown?
Просто читал где то на форумах что кто то так делал. Или видимо я не так понял.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 10:26
Tolking
alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...
P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 11:05
DanilaDIV
Tolking писал(а):alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...
P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!
Этот метод не подойдет. У меня два объекта соединяются и получается общий объект. Мне же нужно определить какая именная часть была нажата.
Пример: карта мира. Кнопки это страны. Мне надо как то определить на какую страну я именно нажал. Пробовал повесить соллайдер2д но чет не срабатывает онмоусдоун.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 11:36
nik26
попробуйте лучше просто UI image и к нему еще Event Trigger. не проверял но вроде должно работать..
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 11:53
Tolking
DanilaDIV писал(а):Tolking писал(а):alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...
P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!
Этот метод не подойдет. У меня два объекта соединяются и получается общий объект. Мне же нужно определить какая именная часть была нажата.
Пример: карта мира. Кнопки это страны. Мне надо как то определить на какую страну я именно нажал. Пробовал повесить соллайдер2д но чет не срабатывает онмоусдоун.
Ну и? Делаешь кнопки, ставишь рядом и жмешь...
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 12:14
DanilaDIV
У кнопок граница действия по прямоугольной области. Евенттригер работает тоже по прямоугольной области. А страны то не прямоугольные.
https://hostingkartinok.com/show-image. ... c86749af78Нужно чтоб реагировала когда нажимали на синюю область а не во весь квадрат.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 12:49
nik26
думаю вопрос исчерпан!
ответ правильный был дан уже в 3-ем сообщении, просто используй скрипт из той ссылки на обычной UI кнопке с твоим изображением, прозрачная часть не будет нажиматься..
PS интересно, а кто нибудь знает почему эту переменную не дают менять на прямую с инспектора, может на производительность влияет?
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 13:07
DanilaDIV
https://hostingkartinok.com/show-image. ... 413ba43f46А как тут определить на какую нажал если у них границы прямоугольной области пересекаются? Я захочу нажать на черную а нажмется синия так как ее прямоугольные границы находятся поверх черной.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 13:11
nik26
белые рамки не стоит принимать за коллизии
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 13:22
DanilaDIV
nik26 писал(а):белые рамки не стоит принимать за коллизии
Я наверно не понимаю до конца как вы хотите реализовать. На объекты повесить скрипт а вот в каком месте скрипта написать код и какой примерно? И кроме скрипта что нибудь еще вешать? Пробовал по разному. private void OnMouseDown() не срабатывает. Если в Update при нажатии кнопки мыши проверять цвет то цвета у фигур могут быть одинаковыми.
Re: Кнопка произвольной формы
Добавлено:
26 апр 2017, 13:38
nik26
не нужно некуда ничего дописывать. по ссылке уже готовый скрипт, его скопируй и вешай на каждую кнопку с произвольной формой
+ важные конфигурации спрайта