Страница 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
не нужно некуда ничего дописывать. по ссылке уже готовый скрипт, его скопируй и вешай на каждую кнопку с произвольной формой

+ важные конфигурации спрайта
Скрытый текст:
Изображение