com.unity.uiextensions.nosa.../Runtime/Scripts/Utilities/ResetSelectableHighlight.cs

38 lines
1.4 KiB
C#

/// Credit SimonDarksideJ
using UnityEngine.EventSystems;
namespace UnityEngine.UI.Extensions
{
/// <summary>
/// Handy Selectable script to un-highlight a selectable component in Unity (e.g. a Button) when the user moves away from it, EVEN IF the user has holding a button on it.
/// Resolves the situation where Unity UI Components remain in a highlighted state even after the pointer has moved away (e.g. user holding a button, mouse, pointer down).
/// Now whenever the cursor leaves the component, it will force the UI component to revert to un-highlighted.
/// </summary>
[AddComponentMenu("UI/Extensions/ResetSelectableHighlight", 31)]
[RequireComponent(typeof(Selectable))]
public class ResetSelectableHighlight : MonoBehaviour, IPointerExitHandler
{
[SerializeField]
private Selectable attachedSelectable = null;
private void Awake()
{
if (attachedSelectable == null || !attachedSelectable)
{
attachedSelectable = GetComponent<Selectable>();
}
}
public void OnPointerExit(PointerEventData eventData)
{
if (!attachedSelectable.interactable)
{
return;
}
attachedSelectable.targetGraphic.CrossFadeColor(attachedSelectable.colors.normalColor, 0f, true, true);
}
}
}