Я обнаружил проблему при выполнении 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.