Кнопка произвольной формы

Графический интерфейс пользователя

Кнопка произвольной формы

Сообщение DanilaDIV 25 апр 2017, 16:30

Добрый день. Хочу сделать UI кнопку произвольной формы взяв за основу(границы) текстуру. Хотел повесить на нее колайдер но скрипт не видит OnMouseDown. Какие есть варианты? Из текстур будет составляться общая картинка по которой можно будет наживать на отдельные элементы поэтому стандартная прямоугольная кнопка не подходит.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение ilka 25 апр 2017, 19:50

На UI кнопку вы хотите повесить коллайдер чтобы обработать нажатие на нее через OnMouseDown? :-?
ilka
UNIверсал
 
Сообщения: 478
Зарегистрирован: 21 авг 2015, 19:32

Re: Кнопка произвольной формы

Сообщение samana 25 апр 2017, 20:12

Кажется это, если правильно помню. Здесь частенько задают подобный вопрос https://docs.unity3d.com/ScriptReferenc ... shold.html
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 08:00

Код theButton.alphaHitTestMinimumThreshold = 0.5f; проверяет альфа канал на прозрачность. И в каком месте его вписать? В Update при срабатывании Input.GetMouseButtonDown(0) ? Тогда я не знаю как получить имя GUI объекта у которого проверять альфа канал который находиться под мышью в момент когда нажали. Пускать луч можно только на 3дмодели. И не вариант использовать этот код, кнопки то не прозрачные и соединяются между собой.
Последний раз редактировалось DanilaDIV 26 апр 2017, 08:51, всего редактировалось 1 раз.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 08:36

ilka писал(а):На UI кнопку вы хотите повесить коллайдер чтобы обработать нажатие на нее через OnMouseDown? :-?

Просто читал где то на форумах что кто то так делал. Или видимо я не так понял.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение Tolking 26 апр 2017, 10:26

alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...

P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 11:05

Tolking писал(а):alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...

P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!

Этот метод не подойдет. У меня два объекта соединяются и получается общий объект. Мне же нужно определить какая именная часть была нажата.
Пример: карта мира. Кнопки это страны. Мне надо как то определить на какую страну я именно нажал. Пробовал повесить соллайдер2д но чет не срабатывает онмоусдоун.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение nik26 26 апр 2017, 11:36

попробуйте лучше просто UI image и к нему еще Event Trigger. не проверял но вроде должно работать..
Аватара пользователя
nik26
UNIт
 
Сообщения: 110
Зарегистрирован: 22 июн 2013, 02:13

Re: Кнопка произвольной формы

Сообщение Tolking 26 апр 2017, 11:53

DanilaDIV писал(а):
Tolking писал(а):alphaHitTestMinimumThreshold определяет меньше какого значения альфы текстуры считать прозрачной для клика.По умолчанию он 0 - кликается даже если альфа в месте клика=0...

P.S. Блин! Нафига, я пишу то, что написано в документации?!!!!

Этот метод не подойдет. У меня два объекта соединяются и получается общий объект. Мне же нужно определить какая именная часть была нажата.
Пример: карта мира. Кнопки это страны. Мне надо как то определить на какую страну я именно нажал. Пробовал повесить соллайдер2д но чет не срабатывает онмоусдоун.

Ну и? Делаешь кнопки, ставишь рядом и жмешь...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2715
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 12:14

У кнопок граница действия по прямоугольной области. Евенттригер работает тоже по прямоугольной области. А страны то не прямоугольные.
https://hostingkartinok.com/show-image. ... c86749af78
Нужно чтоб реагировала когда нажимали на синюю область а не во весь квадрат.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение nik26 26 апр 2017, 12:49

думаю вопрос исчерпан!
ответ правильный был дан уже в 3-ем сообщении, просто используй скрипт из той ссылки на обычной UI кнопке с твоим изображением, прозрачная часть не будет нажиматься..


PS интересно, а кто нибудь знает почему эту переменную не дают менять на прямую с инспектора, может на производительность влияет?
Последний раз редактировалось nik26 26 апр 2017, 13:08, всего редактировалось 1 раз.
Аватара пользователя
nik26
UNIт
 
Сообщения: 110
Зарегистрирован: 22 июн 2013, 02:13

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 13:07

https://hostingkartinok.com/show-image. ... 413ba43f46
А как тут определить на какую нажал если у них границы прямоугольной области пересекаются? Я захочу нажать на черную а нажмется синия так как ее прямоугольные границы находятся поверх черной.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение nik26 26 апр 2017, 13:11

белые рамки не стоит принимать за коллизии
Аватара пользователя
nik26
UNIт
 
Сообщения: 110
Зарегистрирован: 22 июн 2013, 02:13

Re: Кнопка произвольной формы

Сообщение DanilaDIV 26 апр 2017, 13:22

nik26 писал(а):белые рамки не стоит принимать за коллизии

Я наверно не понимаю до конца как вы хотите реализовать. На объекты повесить скрипт а вот в каком месте скрипта написать код и какой примерно? И кроме скрипта что нибудь еще вешать? Пробовал по разному. private void OnMouseDown() не срабатывает. Если в Update при нажатии кнопки мыши проверять цвет то цвета у фигур могут быть одинаковыми.
DanilaDIV
UNITрон
 
Сообщения: 247
Зарегистрирован: 06 май 2014, 12:10

Re: Кнопка произвольной формы

Сообщение nik26 26 апр 2017, 13:38

не нужно некуда ничего дописывать. по ссылке уже готовый скрипт, его скопируй и вешай на каждую кнопку с произвольной формой

+ важные конфигурации спрайта
Скрытый текст:
Изображение
Аватара пользователя
nik26
UNIт
 
Сообщения: 110
Зарегистрирован: 22 июн 2013, 02:13

След.

Вернуться в uGUI

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2