using System; using System.Collections.Generic; using System.Linq; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; namespace Superlazy.UI { [RequireComponent(typeof(Button))] public class SLUIDragButton : SLUIComponent, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler, ISelectHandler, IDeselectHandler, IBeginDragHandler, IDragHandler, IEndDragHandler { public static bool globalDragging; public static GameObject currentDragObject; public static string currentDragCancelCommand; private static PointerEventData currentPoint; public string command; public bool useGrayScale; public bool focus; public string focusBind; public bool fastClick; public SLValueComparison comparison; public string clickSound = "SoundEffect/SE_UI_click"; public string cancelCommand; [NonSerialized] public Button button; private Graphic[] childImages; private Color[] childImageColors; // TODO: SLUIColorSelect 대비해야함 private TextMeshProUGUI[] childTexts; private Color[] childTextColors; private DateTime clickedTime = DateTime.MinValue; // drag private bool dragging = false; private enum ButtonState { Normal, Highlighted, Pressed, Disabled } private ButtonState currentButtonState; private bool isPointerInside; private bool isPointerDown; protected override void Validate() { button = GetComponent