О методе реакции спрайта изображения NGUI на мышь в Unity

Я обнаружил проблему при выполнении NGUI в Unity.

В сцене Unity2D, если изображение спрайта добавлено с помощью Box Collider или Box Collider2D, оно может реагировать на события OnMouseEnter и OnMouseExit, но не может реагировать на NGUI.

это большая яма

Хотя NGUI предоставляет компоненты кнопки, если мы хотим настроить кнопку самостоятельно, два недопустимых события необходимы.

Я долго искал в Интернете, но так и не смог найти ответы на сопутствующие вопросы.Да, похоже, мало кто сталкивался с этой проблемой (может быть, потому что я новичок?).

Так что еще раз запишите мое решение в частном порядке.

 

К счастью, есть «Практическое руководство по Unity3D NGUI», которое я купил недавно и не успел прочитать. Под редакцией Гао Сюэфэна, г-н Гао, пожалуйста, оплатите рекламный сбор (побег) после прочтения этой статьи. Я видел в ней следующее предложение: Пока на этом элементе управления есть BoxCollider, мы можем инициировать событие ответа в скрипте через OnClick(), OnHover() и другие функции мониторинга событий.

Мостовые мешки? При наведении()? интересный.

Так что я пошел, чтобы попробовать это

1      void OnHover()
 2      {
 3          Debug.Log( " OnHover " );
4      }

случилось что-то волшебное

Да, вы правильно прочитали, два журнала. Проверка говорит, что у меня включен Collapse. После тщательного наблюдения я могу обнаружить, что когда моя мышь входит в диапазон, воспроизводится первый журнал, а второй журнал воспроизводится после выхода, то есть когда мышь входит и выходит, OnHover() будет запущен один раз;

Поэтому я рассмеялся и написал поддельные OnMouseEnter() и OnMouseExit();

1      частное  логическое значение isEnter = false ;
2  
3      void OnHover()
 4      {
 5          isEnter = ! естьэнтер;
6          если ( isEnter )
 7          {
 8              OnMouseEnter ( ) ;
9          }
 10          else 
11          {
 12              OnMouseExit();
13          }
 14      }
 15      private  void OnMouseEnter()
 16      {
 17          Debug.Log( ";Enter " );
 18      }
 19      private  void OnMouseExit()
 20      {
 21          Debug.Log( " Exit " );
 22      }

 

//Обновлено 3 августа 2017 г., 20:34//

В дополнение к вышеперечисленным методам есть более ортодоксальный метод: компонент EvenTrigger.

Затем перетащите скрипт в соответствующий EvenDelegate и выберите метод, который будет выполняться соответствующим событием.

Его также можно добавить динамически с помощью скрипта.

1  с использованием UnityEngine;
2  
3  пространство имен Assets.Scripts
 4  {
 5      class EvenTriggerTest:MonoBehaviour
 6      {
 7          UIEventTrigger ET;
8  
9          private  void Start()
 10          {
 11              ET = GetComponent<UIEventTrigger> ();
12              EventDelegate EDHoverOver = новый EventDelegate( это , " MyOnHoverOver " );
13              ET.onHoverOver.Add(EDHoverOver);
14         }
 15  
16          private  void MyOnHoverOver()
 17          {
 18              Debug.Log( " HoverOver " );
19          }
 20      }
 21 }

 

Перепечатано по адресу: https://www.cnblogs.com/Yukisora/p/7043360.html.

Je suppose que tu aimes

Origine blog.csdn.net/a1808508751/article/details/101353085
conseillé
Classement