VR中實現UI的Button點擊,主要是須要實現IPointerClickHandler接口,由於在Unity將全部的按鈕操做都封裝成了相應的接口,須要相應的功能只須要去實現對應的接口就行了。在這裏咱們須要先定義一個委託,返回值爲空,第一個參數爲消息的發送者(即掛載了該腳本的按鈕),第二個參數是存放的一些點擊數據,這個委託的做用就是在按鈕被點擊時所觸發的事件,關於委託、事件如何定義這裏就不詳細介紹。因此須要點擊該按鈕實現什麼功能就能夠將具體的功能寫在具體的實現函數中,如Test腳本中所寫。而後在UIListenerEvent類中,因爲繼承了按鈕點擊接口,因此須要實現相應的點擊方法,這個方法是當按鈕被點擊時自動調用的,那麼接下來只須要將事件放在該方法中進行執行,就能夠實現點擊該按鈕觸發相應的功能了。api
以上兩個腳本都掛載到按鈕上、或者任何你但願經過扣動扳機鍵觸發相應行爲的物體上。由於這裏是用來測試的,因此test中的代碼是在start中直接經過GetComponent找到對應的組件,其實這個腳本的應用還能夠更加靈活,便可以在射線進入到某個物體時,再進行組件的獲取,而後進行事件的註冊,當射線離開物體時,再將事件移除。如何獲取射線是否進入到某個物體,這個應該很簡單,詳細去看HTC的api就好或者VRTK。而後發射射線打中按鈕,再扣動扳機鍵,就能夠在控制檯打印出「按鈕被點擊了」.app
還有其餘按鈕接口,要想實現其餘按鈕功能,只須要同上實現相應的接口就好:函數
IPointerClickHandler 按鈕點擊測試
IPointerEnterHandler 射線進入按鈕的時候spa
IPointerDownHandler 按鈕被按下code
IPointerUpHandler 鬆開按鈕時繼承
IPointerExitHandler 射線離開按鈕時接口