Unity之高通vuforia虚拟按钮

高通插件导入Unity后,可以在路径Vuforia/Prefabs/VirtualButton下找到虚拟按钮的预制件,我们直接拿来使用即可,自己编写脚本代码继承IVirtualButtonEventHandler接口即可,同时需要实现接口里的OnButtonPressed和OnButtonRelease方法。

using UnityEngine;
using System.Collections;
using Vuforia;
using System;

public class VurtualButton : MonoBehaviour,IVirtualButtonEventHandler{

    /// <summary>
    /// 虚拟按钮按下
    /// </summary>
    /// <param name="vb"></param>
    public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
    {
        throw new NotImplementedException();
    }
/// <summary>
/// 虚拟按钮没按下
/// </summary>
/// <param name="vb"></param>
    public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
    {
        throw new NotImplementedException();
    }
    // Use this for initialization
    void Start () {
    
    }
    // Update is called once per frame
    void Update () {
    
    }
}

当然还需要将虚拟按钮注册到事件系统中,需要早Start方法里完成。

using UnityEngine;
using System.Collections;
using Vuforia;
using System;

public class VurtualButton : MonoBehaviour,IVirtualButtonEventHandler{
    public GameObject cube;
    public GameObject sphere;
    private Material cube_Material;
    private Material sphere_Material;
    /// <summary>
    /// 虚拟按钮按下
    /// </summary>
    /// <param name="vb"></param>
    public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
    {
        switch (vb.VirtualButtonName)
        {
            case "11":
                cube.SetActive(true);
                cube_Material.color = Color.blue;         
                break;
            case "12":
              
                sphere.SetActive(true);
                sphere_Material.color = Color.Lerp(Color.red, Color.green, Time.time);
                break;
            default:
                break;
        }
    }
/// <summary>
/// 虚拟按钮没按下
/// </summary>
/// <param name="vb"></param>
    public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
    {
        switch (vb.VirtualButtonName)
        {
            case "11":
                cube_Material.color = Color.red;
                cube.SetActive(false);
                break;
            case "12":
                sphere_Material.color = Color.white;
                sphere.SetActive(false);
                break;
            default:
                break;
        }
       
    }
    // Use this for initialization
    void Start () {
        VirtualButtonBehaviour[] vbs = GetComponentsInChildren<VirtualButtonBehaviour>();

        for (int i = 0; i < vbs.Length; i++)
        {
            //在虚拟按钮中注册TrackableBehaviour事件
            vbs[i].RegisterEventHandler(this);
        }

        cube.SetActive(false);
        sphere.SetActive(false);
        cube_Material = cube.GetComponent<MeshRenderer>().material;
        sphere_Material = sphere.GetComponent<MeshRenderer>().material;
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}


![XVNZQG1)]S_VRMN5WS5H6UU.png](http://upload-images.jianshu.io/upload_images/3427975-681244f986f25161.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
虚拟按钮名字设置:
![ON$@0YH_]LMB100LCUA5HO.png

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容