using System; using UnityEngine; using UnityEngine.UI; public class ButtonBehavior : MonoBehaviour { public bool OnUp = true; public bool OnDown; public bool Repeat; public Button.ButtonClickedEvent OnClick = new Button.ButtonClickedEvent(); private Controller myController = new Controller(); private Collider2D[] colliders; private float downTime; public void OnEnable() { this.colliders = base.GetComponents(); this.myController.Reset(); } public void Update() { this.myController.Update(); foreach (Collider2D coll in this.colliders) { switch (this.myController.CheckDrag(coll, false)) { case DragState.TouchStart: if (this.OnDown) { this.OnClick.Invoke(); } break; case DragState.Dragging: if (this.Repeat) { this.downTime += Time.fixedDeltaTime; if (this.downTime >= 0.3f) { this.downTime = 0f; this.OnClick.Invoke(); } } else { this.downTime = 0f; } break; case DragState.Released: if (this.OnUp) { this.OnClick.Invoke(); } break; } } } }