HoloToolKit無法通過父物體集中處理子物體的點擊等事件,本文介紹了如何封裝Hololens點擊事件在父物體上集中處理,大概步驟為:
- 拖入HoloLensCamera預設體
- 拖入InputManager預設體
- 拖入Cursor預設體
- 創建畫布
- 創建兩個Button
1-3. 拖入三個預設體
Paste_Image.png
4. 創建畫布
創建完畫布后,把 Render Mode 設為 World Space
Paste_Image.png
添加CanvasCtrl.cs腳本
using UnityEngine;
public class CanvasCtrl : MonoBehaviour
{
private TapEvent m_Button1;
private TapEvent m_Button2;
private void Awake()
{
m_Button1 = transform.FindChild("Button1").GetComponent<TapEvent>();
m_Button2 = transform.FindChild("Button2").GetComponent<TapEvent>();
m_Button1.hololensOnClick.AddListener(OnButton1Click);
m_Button2.hololensOnClick.AddListener(OnButton2Click);
}
private void OnButton1Click()
{
Debug.Log("OnButton1Click");
}
private void OnButton2Click()
{
Debug.Log("OnButton2Click");
}
}
5. 創建兩個Button
Paste_Image.png
兩個按鈕都添加TapEvent.cs腳本
using UnityEngine;
using UnityEngine.Events;
using HoloToolkit.Unity.InputModule;
public class TapEvent : MonoBehaviour,IInputClickHandler
{
[SerializeField]
private UnityEvent HololensOnClick = new UnityEvent();
public UnityEvent hololensOnClick
{
get { return HololensOnClick; }
set { hololensOnClick = value; }
}
public void OnInputClicked(InputEventData eventData)
{
HololensOnClick.Invoke();
}
}
測試結果
Paste_Image.png
如喜歡該簡博,請加至收藏夾
作者 @Zajanmy
2017 年 01月 19日