UI над яким об’єктом знаходиться миша

Woolf 22 Гру 2014, 09:11

Визначити, що миша над об'єктом UI можемо: EventSystem.current.IsPointerOverGameObject()

А як визначити, що миша знаходиться над КОНКРЕТНИМ об'єктом? Тобто. я хочу зі скрипту зрозуміти, що якщо курсор знаходиться над моєю картинкою, то підсвітити її. Я розумію, що можна це зробити за допомогою EventTrigger, але дуже не хочеться, громіздко занадто.

if ( EventSystem. current != null ) < if ( EventSystem. current . IsPointerOverGameObject ( ) ) < if ( EventSystem. current . currentSelectedGameObject == gameObject ) < Debug. Log ("Over" + EventSystem. current. currentSelectedGameObject); > > > >

Re: UI над яким об'єктом знаходиться миша

Killerwhale 22 Гру 2014, 20:11

Приклад підсвічування кнопок C#

Public class ToggleStateChanges : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler < public Text ToggleLabel; public Text ToggleLabel2; public Image ToggleSprite; public Color HighlightSpriteColor; public Color HighlightTextColor; public Color ActiveSpriteColor; public Color ActiveTextColor; public Color NormalSpriteColor; public Color NormalTextColor; public Color PressSpriteColor; public Color PressTextColor; public Color DisableSpriteColor; public Color DisableTextColor; public bool Disabled;

[ ExecuteInEditMode ] public void OnHighlight ( ) < if (Disabled) return; if (ToggleSprite! = null) ToggleSprite. color = HighlightSpriteColor; if (ToggleLabel! = null) ToggleLabel. color = HighlightTextColor; if (ToggleLabel2! = null) ToggleLabel2. color = HighlightTextColor; > [ ExecuteInEditMode] public void OnNormal ( ) < якщо (вимкнено) повернення; if ( ToggleSprite != null ) ToggleSprite. колір = NormalSpriteColor; if ( ToggleLabel != null ) ToggleLabel. колір = NormalTextColor; якщо ( ToggleLabel2 != null ) ToggleLabel2. колір = NormalTextColor; > [ ExecuteInEditMode ] public void OnPressed ( ) < якщо (вимкнено) повернення; if ( ToggleSprite != null ) ToggleSprite. колір = PressSpriteColor; if ( ToggleLabel != null ) ToggleLabel. колір = PressTextColor; якщо ( ToggleLabel2 != null ) ToggleLabel2. колір = PressTextColor; > [ ExecuteInEditMode ] public void IsActive (bool стан) < якщо (вимкнено) повернення; якщо ( стан ) < if ( ToggleSprite != null ) ToggleSprite. колір = ActiveSpriteColor; if ( ToggleLabel != null ) ToggleLabel. колір = ActiveTextColor; якщо ( ToggleLabel2 != null ) ToggleLabel2. колір = ActiveTextColor; > інакше < OnNormal ( ) ; > >

[ ExecuteInEditMode ] void Start ( ) < if ( Disabled ) Disable ( ) ; інакше Увімкнути ( ); IsActive ( GetComponent ( ) . isOn ) ; GetComponent ( ) . onValueChanged . AddListener (OnChangeAction); > [ ExecuteInEditMode ] private void OnChangeAction ( T0 arg0 ) < if ( arg0 є логічне значення ) IsActive ( ( arg0 як логічне значення ? ) . Значення ) ; > [ ExecuteInEditMode ] public void OnPointerEnter ( PointerEventData eventData ) < if ( ! GetComponent ( ) . isOn ) OnHighlight ( ) ; > [ ExecuteInEditMode ] public void OnPointerExit ( PointerEventData eventData ) < if ( ! GetComponent ( ) . isOn ) OnNormal ( ) ; > [ ExecuteInEditMode ] public void OnPointerClick ( PointerEventDataeventData) < if ( ! GetComponent ( ). isOn ) OnPressed ( ) ; > [ ExecuteInEditMode ] public void Disable ( ) < Disabled = true; if (ToggleSprite! = null) ToggleSprite. color = DisableSpriteColor; if (ToggleLabel! = null) ToggleLabel. color = DisableTextColor; if (ToggleLabel2! = null) ToggleLabel2. color = DisableTextColor; > [ ExecuteInEditMode ] public void Enable ( ) < Disabled = false; OnNormal ( ); >

Re: UI над яким об'єктом знаходиться миша

BenjaminMoore 22 гру 2014, 21:45