GUI. Реакция на наведение мыши.

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

GUI. Реакция на наведение мыши.

Сообщение Fatalix3d 11 фев 2010, 12:43

Добрый день, имею две картинки (простая и подсвеченная), так вот как узнать что в данный момент мышь находится на картинке ? Ну что то типо MouseEnter,MouseLeave .
Fatalix3d
UNец
 
Сообщения: 47
Зарегистрирован: 23 дек 2009, 17:43

Re: GUI. Реакция на наведение мыши.

Сообщение Zaicheg 11 фев 2010, 13:04

Fatalix3d писал(а):Добрый день, имею две картинки (простая и подсвеченная), так вот как узнать что в данный момент мышь находится на картинке ? Ну что то типо MouseEnter,MouseLeave .

http://unity3d.com/support/documentatio ... viour.html
http://unity3d.com/support/documentatio ... Enter.html
http://unity3d.com/support/documentatio ... eOver.html
http://unity3d.com/support/documentatio ... eExit.html
Дьяченко Роман
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. Реакция на наведение мыши.

Сообщение RefractoR 16 фев 2010, 21:50

если картинки рисуются в OnGUI, то события мыши (OnMouseOver и т.п) использовать не получится..поэтому приходится придумывать, как такую проверку прямо в OnGUI организовать. Наверное, самый легкий способ - Rect(imgPosX, imgPosY, imgW, imgH).Contains(Event.current.mousePosition). Как-то пришлось писать смену фона по пересечению курсором определнной кнопки, написал такую вот функцию:
Код: Выделить всё
def ChangeBack (newBack as Texture2D, area as Rect):
      if GUILayoutUtility.GetLastRect().Contains(Event.current.mousePosition):
         if area.Contains(Event.current.mousePosition):
            GUISettings.toolsStyle.hover.background = newBack
         else:
            GUISettings.toolsStyle.hover.background = GUISettings.background

Сам не имею большого опыта работы с интерфейсами, но надеюсь, это вам хоть чем-то поможет
RefractoR
UNIт
 
Сообщения: 50
Зарегистрирован: 05 ноя 2009, 16:31
Откуда: Краснодар
  • ICQ

Re: GUI. Реакция на наведение мыши.

Сообщение Guzyano 14 июл 2010, 13:43

Можно контент GUI прописать текстовый по нем и обрабатывать - в Стандартной UNITY справке можно посмотреть
Не помню где но точно есть. Вот пример из моего кода


Код: Выделить всё
     
import System.Convert;
private var lastTooltip : String = "";

function  GUIOnMouseExit( ID : int )
{}
function  GUIOnMouseEnter( ID : int )
{}

function OnGUI ()
{   
   for(i =0 ,i <.. ,i ++)
    {
       if(GUI.Button (Rect(..) , GUIContent(someTexture, i.ToString()))
           print("..");
    }

    if(Event.current.type == EventType.repaint && GUI.tooltip != lastTooltip)
         {
              if (lastTooltip != "")
                   GUIOnMouseExit( ToInt32( lastTooltip));   
              if(GUI.tooltip != "")
                   GUIOnMouseEnter( ToInt32( GUI.tooltip)); 
              lastTooltip = GUI.tooltip;
         }
}


Можно без конверсии передавать и String()
Мне просто удобно было кнопки в цикле в одном выводить - сразу одним циклом сколько надо...
Последний раз редактировалось Guzyano 14 июл 2010, 17:37, всего редактировалось 3 раз(а).
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт

Re: GUI. Реакция на наведение мыши.

Сообщение Erichon 14 июл 2010, 14:04

Можно пойти по пути меньшего сопротивления и сделать кнопку с вложенной картинкой.
Код: Выделить всё
/* Button Content examples */

var icon : Texture2D;

function OnGUI () {
   if (GUI.Button (Rect (10,10, 100, 50), icon)) {
      print ("you clicked the icon");
   }

   if (GUI.Button (Rect (10,70, 100, 20), "This is text")) {
      print ("you clicked the text button");
   }
}

Взято с HELP.
Per aspera ad astra - Сквозь тернии к звездам.
Аватара пользователя
Erichon
UNец
 
Сообщения: 22
Зарегистрирован: 12 авг 2009, 09:05
Откуда: Kazakhstan
  • ICQ

Re: GUI. Реакция на наведение мыши.

Сообщение Guzyano 14 июл 2010, 15:20

чего-то не понятно а где ты обрабатываешь то что курсор над кнопкой не не нажимает на нее ??? ;;)
Тема была вроде такая ( GUI Highlight on mouse Over)!!! Наведение мыши но не нажатие - с нажатием все ясно...
А у вас просто нажатие на две кнопки одна с текстом вторая с текстурой ???
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт

Re: GUI. Реакция на наведение мыши.

Сообщение Serge 14 июл 2010, 17:45

Guzyano писал(а):чего-то не понятно а где ты обрабатываешь то что курсор над кнопкой не не нажимает на нее ??? ;;)
Тема была вроде такая ( GUI Highlight on mouse Over)!!! Наведение мыши но не нажатие - с нажатием все ясно...
А у вас просто нажатие на две кнопки одна с текстом вторая с текстурой ???

А нечего, что тема от 16 февраля и автор больше вопросов не задавал?
О, сколько нам открытий чудных Готовят просвещенья дух И опыт, сын ошибок трудных, И гений, парадоксов друг, И случай, бог изобретатель.
Аватара пользователя
Serge
UNIверсал
 
Сообщения: 476
Зарегистрирован: 20 мар 2009, 15:53
Откуда: Сибирь г. Омск
  • Сайт
  • ICQ

Re: GUI. Реакция на наведение мыши.

Сообщение Guzyano 14 июл 2010, 19:49

Да я особо и не всматривался в дату по поиску смотрел темы не сортировал по дате (мне дата не важна особо)
Это еще что я тут на официальном форуме и не такое видел
там вон ответ дали в июне 2010
на тему
с 5 апреля 2008 года


http://forum.unity3d.com/viewtopic.php?t=10603


и ничего B-)
Guzyano
UNец
 
Сообщения: 49
Зарегистрирован: 22 июн 2010, 12:31
Откуда: Минск
  • Сайт

Re: GUI. Реакция на наведение мыши.

Сообщение Golandez 14 июл 2010, 22:09

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


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

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

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