Search Unity

Unity UI Hot to avoid this bug? Event Trigger OnPointerEnter

Discussion in 'UGUI & TextMesh Pro' started by LaserRock, Dec 3, 2018.

  1. LaserRock

    LaserRock

    Joined:
    Jan 2, 2018
    Posts:
    13
    Honeycam 2018-12-03 13-59-28.gif
    Code (CSharp):
    1.  
    2.     EventTrigger eventTrigger;
    3.     public RectTransform[] ComponentPanel;
    4.     public RectTransform RectCover;
    5.     public int currentPanel = 1;
    6.     void Start () {
    7.      
    8.         eventTrigger = GetComponent<EventTrigger>();
    9.         EventTrigger.Entry entry = new EventTrigger.Entry();
    10.         entry.eventID = EventTriggerType.PointerEnter;
    11.         entry.callback.AddListener((data) => { OnPointerEnterDelegate((PointerEventData)data); });
    12.         eventTrigger.triggers.Add(entry);
    13.     }
    14.     void LateUpdate ()
    15.     {
    16.         PanelController();
    17.     }
    18.     public void OnPointerEnterDelegate(PointerEventData data)
    19.     {
    20.         for (int i = 0; i < ComponentPanel.Length; i++)
    21.         {
    22.             if (
    23.                 data.pointerEnter.gameObject == ComponentPanel[i].transform.GetChild(0).gameObject
    24.                 )
    25.             {
    26.                 currentPanel = i;
    27.             }
    28.         }
    29.     }
    Sometimes when rapidly move mouse OnPointerEnter not detect current panel. How to fix this? Or there is batter solution to detect on over which panel is mouse ?
     
  2. Hosnkobf

    Hosnkobf

    Joined:
    Aug 23, 2016
    Posts:
    1,096
    I am not sure if it is really a problem of PointerEnter. Maybe it has to do with your animation.
    To find out if it is a problem with the event or not you should add
    Debug.LogFormat("current panel changed to {0}.", i);
    after
    currentPanel = i;
    . Then check in the console if it really doesn't trigger the event.