在实际使用中,UI.Button 的需求往往不止"点一下"这么简单,还可能需要区分按下、抬起,甚至按住后的移动等事件。

Unity 提供了 IPointerDownHandler 和 IPointerUpHandler 等接口,实现它们即可分别响应按下和抬起。下面是一个示例脚本,按下时触发刹车音效并设置刹车状态,抬起时解除刹车状态:

using UnityEngine;
                using System.Collections;
                using UnityEngine.UI;
                using UnityEngine.EventSystems;
                using UnityEngine.Events;
                
                public class platformInput : UIBehaviour,IPointerDownHandler,IPointerUpHandler
                {
                    public void OnPointerUp(PointerEventData ev)
                    {
                        Debug.Log("up");
                        PlayerController.ins._is_brake = false;
                    }
                   public  void OnPointerDown(PointerEventData ev)
                    {
                        Debug.Log("down");
                
                        AudioMgr.ins.playBrake();
                        PlayerController.ins._is_brake = true;
                
                    }
                    public bool Stop()
                    {
                #if UNITY_STANDALONE_WIN
                        return Input.GetKey(KeyCode.D);
                #endif
                        return false;
                    }
                
                }