延續這篇文章,一樣使用Vuforia~
選擇 Vuforia → Prefabs → VirtualButton,並拖曳到ImageTarget上成為其子物件(在此放兩個VirtualButton)
並將第一個命名為VB1,第二個為VB2
請記得!命名完畢後要在它們的Name也進行修改,同樣改為VB1和VB2
(這個Name為程式本身要辨識是哪顆Button使用)
若要取得這個紅框處的名稱則使用VirtualButtonName
若是使用Name則只會取得 VB1 這個名稱
之後會再ImageTarget正中央發現兩個圖案,我將VB1拉到左上放置、VB2拉到左下放置
這兩個圖案就是Button的位置了!
再來新增一個C# script,命名為ButtonEventPractice,並引入Vuforia這個命名空間,且實作這個空間所提供的IVirtualButtonEventHandler介面
對此介面按下F12,可以看到該介面內有兩個方法
OnButtonPressed 為虛擬按鈕被按下時會呼叫的方法
OnButtonReleased 為虛擬按鈕被放開時會呼叫的方法
而且這兩個方法都會傳入被按下的按鈕物件vb,由此物件可取得Name
都了解後就開始撰寫程式碼了!
using UnityEngine;
using Vuforia;
public class ButtonEventPractice : MonoBehaviour, IVirtualButtonEventHandler
{
private void Start()
{
//建立虛擬按鈕物件並獲得其子元素的組件
VirtualButtonBehaviour[] vbs = transform.GetComponentsInChildren<VirtualButtonBehaviour>();
foreach (VirtualButtonBehaviour vb in vbs)
{
vb.RegisterEventHandler(this);//註冊虛擬按鈕事件處理
}
}
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
{
Debug.Log(vb.name + " 按鈕被按下");//列印出是哪個虛擬按鈕被按下
}
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
{
Debug.Log(vb.name + " 按鈕被放開");//列印出是哪個虛擬按鈕被放開
}
}
之後將此程式碼托放到ImageTarget上,按下執行或輸出成apk放到Android上執行皆可!
留言列表