using System.Collections; using UnityEditor; using UnityEngine; using UnityEngine.Events; using UnityEngine.EventSystems; using UnityEngine.UI; [RequireComponent(typeof(Audio))] [RequireComponent(typeof(Button))] [RequireComponent(typeof(Animator))] public class BaseButton : MonoBehaviour, ISelectHandler, IDeselectHandler, IPointerEnterHandler, IPointerExitHandler, IPointerDownHandler, IPointerUpHandler { [SerializeField] public UnityEvent _onClickedAnimationEnd = default; [SerializeField] public UnityEvent _onSelected = default; [SerializeField] public UnityEvent _onDeselected = default; [SerializeField] public RectTransform _scrollView = default; [SerializeField] public float _scrollUpAmount = default; [SerializeField] public float _scrollDownAmount = default; [SerializeField] private bool _selectOnHover = default; [SerializeField] private bool _clickAnimation = true; [SerializeField] private bool _ignoreFirstSelectSound = default; [SerializeField] private bool _allowMultiplePresses = default; [SerializeField] private Selectable selectableParent = default; [SerializeField] protected bool _resetToDefault = false; protected Audio _audio; protected Button _button; protected Animator _animator; protected RectTransform _rect; private bool _isIgnoringFirstSelectSound; private bool _wasClicked; private Coroutine _moveVerticalCoroutine; protected Vector2 _defaultPosition; private readonly int _moveVerticalAmount = 5; protected bool _isPressed; protected virtual void Awake() { #if UNITY_EDITOR HandleUtility.AddDefaultControl(GUIUtility.GetControlID(FocusType.Passive)); #endif _audio = GetComponent