延續這篇文章,一樣使用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上執行皆可!

arrow
arrow
    全站熱搜

    Yang 發表在 痞客邦 留言(4) 人氣()