VR中实现UI的Button点击,主要是需要实现IPointerClickHandler接口,需要先定义一个委托,返回值为空,第一个参数为消息的发送者(即挂载了该脚本的按钮),第二个参数是存放的一些点击数据。然后以该委托类型定义一个事件,需要点击该按钮实现什么功能就需要通过注册该事件,然后在接口实现的方法中判断该事件是否有被注册,注册了的事件就会在点击了该按钮后全部执行。
/// <summary>
/// </summary>
public class UIListenerEvent : MonoBehaviour, IPointerClickHandler
{
public delegate void PointerClick(GameObject sender, PointerEventData eventData);
/// <summary>
/// 当按钮被点击时触发
/// </summary>
/// <param name="eventData"></param>
public void OnPointerClick(PointerEventData eventData)
{
if (PointClickHandle != null) PointClickHandle(gameObject, eventData);
}
}
/// <summary>
/// 测试
/// </summary>
public class Test:MonoBehaviour{
private void Start(){
GetComponent<UIListenerEvent>().PointClickHandle+=ClickTest;
}
private void ClickTest(GameObject sender,PointerEventData eventData){
Debug.Log("按钮被点击了");
}
}
以上两个脚本都挂载到按钮身上,然后发射射线打中按钮,再扣动扳机键,即可打印出“按钮被点击了”.
还有其他按钮接口,要想实现其他按钮功能,只需要同上实现相应的接口就好:
IPointerClickHandler 按钮点击
IPointerEnterHandler 射线进入按钮的时候
IPointerDownHandler 按钮被按下
IPointerUpHandler 松开按钮时
IPointerExitHandler 射线离开按钮时