Issue with EventSystems in 2018.4.2f1
2018.4.2f1 Standalone client application button not working properly when out of focus
Raycast works fine when using the Run In Background option, but the interfaces of EventSystems (IPointerEnter ...) do not work properly.
It works fine if the client is focused. But eventSystems interfaces do not work properly when the client is out of focus.
This is my test code.
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
public class FSelectable : MonoBehaviour, IPointerEnterHandler, IPointerClickHandler, IPointerExitHandler
{
private List<RaycastResult> _raycastResults = new List<RaycastResult>();
private int _prevRaycastResultCount = 0;
private List<string> _logForGUI = new List<string>();
public void OnPointerClick(PointerEventData eventData)
{
Debug.Log("OnPointerClick");
_logForGUI.Add("OnPointerClick");
}
public void OnPointerEnter(PointerEventData eventData)
{
Debug.Log("OnPointerEnter");
_logForGUI.Add("OnPointerEnter");
}
public void OnPointerExit(PointerEventData eventData)
{
Debug.Log("OnPointerExit");
_logForGUI.Add("OnPointerExit");
}
public void OnApplicationFocus(bool focus)
{
if (focus == true)
{
Debug.Log("isFocused");
_logForGUI.Add("isFocused");
}
else
{
Debug.Log("isFocusOut");
_logForGUI.Add("isFocusOut");
}
}
public void Update()
{
if (EventSystem.current == null)
return;
PointerEventData eventData = new PointerEventData(EventSystem.current);
if (eventData == null)
return;
eventData.position = Input.mousePosition;
EventSystem.current.RaycastAll(eventData, _raycastResults);
if (_prevRaycastResultCount != _raycastResults.Count)
{
_prevRaycastResultCount = _raycastResults.Count;
if (_raycastResults.Count > 0)
{
Debug.Log(string.Format("Raycast hit {0}", _raycastResults[0].gameObject.name));
_logForGUI.Add(string.Format("Raycast hit {0}", _raycastResults[0].gameObject.name));
}
else
{
Debug.Log("Raycast hit nothing");
_logForGUI.Add("Raycast hit nothing");
}
}
}
public void OnGUI()
{
GUILayout.BeginVertical();
for (int i = 0; i < _logForGUI.Count; i++)
GUILayout.Label(_logForGUI[i]);
GUILayout.EndVertical();
}
}
This is test output.
The same test in version 5.3.8p2 seems to work.
Is this a bug?
538p2-runinbackground.png
(50.4 kB)
201842f1-runinbackground.png
(16.3 kB)
Comment