Search Unity

OnPointerExit fired right after OnPointerEnter

Discussion in 'UGUI & TextMesh Pro' started by savely00, Apr 18, 2018.

  1. savely00

    savely00

    Joined:
    Feb 27, 2014
    Posts:
    36
    I am implementing a HUD system where I'd like to display a label over a POI (Point of interest).
    Environment: Unity 2018.1.0b13 and PC standalone.

    I've created a TextMeshProUGUI object and set the TAG to HUD_TEXT.
    Added PhysicsRaycaster to Main Camera.
    Created a 3D object (cube) and add POI_Inputs.cs script to it. (see below).

    Run in Editor.
    Label is blinking and in debugger you can see a OnPointerExit method fired when the pointer is over the cube.

    Code (CSharp):
    1. using TMPro;
    2. using UnityEngine;
    3. using UnityEngine.EventSystems;
    4.  
    5. public class POI_Input : MonoBehaviour,
    6.                         IPointerEnterHandler,
    7.                         IPointerExitHandler
    8. {
    9.  
    10.     private Transform hudTransform;
    11.     private TextMeshProUGUI hudText;
    12.     private Camera cam;
    13.     private float near;
    14.    
    15.     private void Awake () {
    16.         var ob = GameObject.FindWithTag ("HUD_TEXT");
    17.         if (!ob) return;
    18.        
    19.         hudText = ob.GetComponent<TextMeshProUGUI>();
    20.         hudTransform = ob.GetComponent<Transform>();
    21.         hudText.enabled = false;
    22.         cam = Camera.main;
    23.         near = cam.nearClipPlane;
    24.  
    25.     }
    26.  
    27.     public void OnPointerEnter(PointerEventData eventData)
    28.     {
    29.         Debug.Log("OnPointerEnter " + name);
    30.         hudTransform.position = new Vector3(eventData.position.x, eventData.position.y, near);
    31.         hudText.text = name;
    32.         hudText.enabled = true;
    33.     }
    34.  
    35.     public void OnPointerExit(PointerEventData eventData)
    36.     {
    37.         Debug.Log("OnPointerExit " + name);
    38.         hudText.text = "";
    39.         hudText.enabled = false;
    40.     }
    41. }
    Please provide you suggestions and comments.

    P.S. Same behavior with UI.Text
     
  2. savely00

    savely00

    Joined:
    Feb 27, 2014
    Posts:
    36
    Resolved! Using OnMouseEnter and OnMouseExit instead of OnPointerEnter and OnPointerExit.:)