VR中射线点击按钮的实现

   VR中实现UI的Button点击,主要是需要实现IPointerClickHandler接口,需要先定义一个委托,返回值为空,第一个参数为消息的发送者(即挂载了该脚本的按钮),第二个参数是存放的一些点击数据。然后以该委托类型定义一个事件,需要点击该按钮实现什么功能就需要通过注册该事件,然后在接口实现的方法中判断该事件是否有被注册,注册了的事件就会在点击了该按钮后全部执行。

    /// <summary>

    /// UI监听事件
    /// </summary>
    public class UIListenerEvent : MonoBehaviour, IPointerClickHandler
    {

        public delegate void PointerClick(GameObject sender, PointerEventData eventData);


        public event PointerClick PointClickHandle;
        /// <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       射线离开按钮时


猜你喜欢

转载自blog.csdn.net/qq_34412086/article/details/80177217
今日推荐