在实际使用中,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;
}
}