Search Unity

  1. Welcome to the Unity Forums! Please take the time to read our Code of Conduct to familiarize yourself with the forum rules and how to post constructively.
  2. We have updated the language to the Editor Terms based on feedback from our employees and community. Learn more.
    Dismiss Notice

EventSystem issue...

Discussion in 'Unity 5 Pre-order Beta' started by Ziron999, Mar 3, 2015.

  1. Ziron999

    Ziron999

    Joined:
    Jan 22, 2014
    Posts:
    278
    in 4.6 this worked great:
    Code (CSharp):
    1. if (EventSystem.current.currentSelectedGameObject != null && EventSystem.current.currentSelectedGameObject.GetComponent<Button>() != null)
    2.                 return; //clicked button
    3.             else
    4.             {
    5.                 if (Input.GetMouseButtonDown(0) && Input.touchCount != 2)
    6.                 {
    7.                     MoveToMouse();
    8.                 }
    9.                 if (Input.GetMouseButton(0) && !RTSCamera.dragging && !planetSelected)
    10.                     Invoke("MovePlayerToDestination", 0.2f);
    11.                 else if(RTSCamera.dragging)
    12.                     CancelInvoke("MovePlayerToDestination");
    13.             }
    however in 5 for some reason when i push a button from the UI it still doesn't trigger anymore and you push behind it :(
     
  2. Ziron999

    Ziron999

    Joined:
    Jan 22, 2014
    Posts:
    278
    It appears to be an issue with EventSystem.current.currentSelectedGameObject.GetComponent<Button>() != null) it looks like in 5 no matter what get button is never null even if the gameobject doesn't have one...

    even trying mouse over like so:
    Code (CSharp):
    1. if(EventSystem.current.currentInputModule is TouchInputModule) {
    2.                 for(int i=0; i<Input.touchCount; i++) {
    3.                     Touch touch = Input.touches[i];
    4.                     if( touch.phase != TouchPhase.Canceled && touch.phase != TouchPhase.Ended) {
    5.                         if(EventSystem.current.IsPointerOverGameObject( Input.touches[i].fingerId )) {
    6.                             if (EventSystem.current.currentSelectedGameObject.GetComponent<Button>() != null)
    7.                             {
    8.                                 Debug.Log(EventSystem.current.currentSelectedGameObject.name);
    9.                                 isPointerOverGameObject = true;
    10.                             }
    11.                             break;
    12.                         }
    13.                     }
    14.                 }
    15.             } else {
    16.                 isPointerOverGameObject = EventSystem.current.IsPointerOverGameObject();
    17.             }
    isPointerOverGameObject = true even when over objects without a button :(
     
  3. Ziron999

    Ziron999

    Joined:
    Jan 22, 2014
    Posts:
    278
    never mind this issue was due to the script execution order changing