Как отловить состояние кнопки GUI [Решено]

Программирование на Юнити.

Как отловить состояние кнопки GUI [Решено]

Сообщение Nevers 03 мар 2011, 17:37

Требуется сделать, чтобы при нажатии на GUI кнопку изменялся текст кнопки. Становился жирным. Вопрос такой. Как отловить состояние кнопки, onHover, onOut и т.д?
Последний раз редактировалось Nevers 21 мар 2011, 10:09, всего редактировалось 1 раз.
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

Re: Как отловить состояние кнопки GUI

Сообщение Golandez 03 мар 2011, 20:18

bool
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Как отловить состояние кнопки GUI

Сообщение Zaicheg 03 мар 2011, 23:13

Как отловить состояние кнопки, onHover, onOut и т.д?

bool

По-моему, это ответ на какой-то совсем другой вопрос.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как отловить состояние кнопки GUI

Сообщение Zaicheg 03 мар 2011, 23:24

Что касается этого вопроса, то:
1. Rect.Contains по всем кнопкам с отловом ввода мыши и соответствующими выводами.
2.
Синтаксис:
Используется csharp
        GUI.Button(new Rect(10, 10, 100, 30), new GUIContent("button", "tooltip"));
        if (GUI.tooltip != "")
            Debug.Log("Hover");
        GUI.Label(new Rect(10, 40, 100, 40), GUI.tooltip);


На оф. форуме довольно много обсуждений костылей по запросу вроде "OnHover".
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как отловить состояние кнопки GUI

Сообщение Golandez 04 мар 2011, 01:28

Как отловить состояние кнопки

Если мне не изменяет память состоянием является Up,Down.Это тоже собираемся через тултипы решать?
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Как отловить состояние кнопки GUI

Сообщение Zaicheg 04 мар 2011, 01:36

Тултипы частично задачу решают без особых заморочек. А Rect.Contains + Input -- (почти) полностью, но с заморочками.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как отловить состояние кнопки GUI

Сообщение Golandez 04 мар 2011, 02:00

Ввести bool,решающий задачу состояния полностью ,без заморочек .
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Как отловить состояние кнопки GUI

Сообщение Nevers 04 мар 2011, 10:48

Все таки данные варианты не позволяют отловить все состояния кнопки.
Для меня пока остается загадкой как можно отловить состояние onPress, то есть когда на кнопку жмут, но еще не произошло событие onMouseUp на этой кнопке....
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

Re: Как отловить состояние кнопки GUI

Сообщение Golandez 04 мар 2011, 11:05

OnMouseDown,если я вас правильно понимаю.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Как отловить состояние кнопки GUI

Сообщение Neodrop 04 мар 2011, 11:12

Nevers писал(а):Все таки данные варианты не позволяют отловить все состояния кнопки.
Для меня пока остается загадкой как можно отловить состояние onPress, то есть когда на кнопку жмут, но еще не произошло событие onMouseUp на этой кнопке....


Проверить попадание мыши в пределы кнопки и получить состояние нажатости нужной вам кнопки. Чего тут непонятного?
Input.GetMouseButton(0)

Если рисуете свою кнопку через Layout, то проверить попадание мыши в неё можно так :
(пишем после прорисовки кнопки)
GUILayoutUtility.GetLastRect(Event.current.mousePosition)

:-??
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Как отловить состояние кнопки GUI

Сообщение Nevers 04 мар 2011, 11:25

То есть стандартно никак не получится получить состояние кнопки... Жаль. Просто такие решения очень замороченные. Например придется еще решать вопрос о перекрытии кнопки например окном, или учитывать состояние enable, disable и так далее.
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

Re: Как отловить состояние кнопки GUI

Сообщение Zaicheg 04 мар 2011, 13:22

Golandez писал(а):Ввести bool,решающий задачу состояния полностью ,без заморочек .

Поясни, если не трудно, как введение переменной типа bool даст нам состояние кнопки. Я совсем тебя не понимаю.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как отловить состояние кнопки GUI

Сообщение Golandez 04 мар 2011, 14:23

Синтаксис:
Используется csharp
if (GUI.Button(position : Rect, text : string))
{
  varBool=!varBool
}
 

Актуально,когда состояние фиксируется.Остальное через OnMouse.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Как отловить состояние кнопки GUI

Сообщение Zaicheg 04 мар 2011, 14:31

Golandez писал(а):
Синтаксис:
Используется csharp
if (GUI.Button(position : Rect, text : string))
{
  varBool=!varBool
}
 

Эмм... а как мы из этого кода получим искомые состояния "onHover, onOut и т.д"?

Что касается OnMouse, то точно-точно оно с GUI. (например, с .Button) работает? Ведь вроде (то есть, в справке так сказано) только с коллайдерами и GUIElement (guitexture, например).
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: Как отловить состояние кнопки GUI

Сообщение Nevers 04 мар 2011, 14:34

МужЫки программеры, а можно-ли изменить логику работы GUI.Button? Если да, то как?
p.s Я например хочу чтобы мне метод Button объекта GUI возврашад не булевое значение, а интовое значение состояния кнопки. Было-бы шикарно )
Последний раз редактировалось Nevers 04 мар 2011, 14:58, всего редактировалось 1 раз.
Nevers
UNIт
 
Сообщения: 56
Зарегистрирован: 22 фев 2011, 10:16

След.

Вернуться в Скрипты

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

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