#游戏unity#AR中奇妙的虚拟按钮
先说点题外话,博主在调试项目的时候,什么设置也没有改,突然就运行保存,说vuforia的实例没有初始化,去网上也没有查到错误原因,吓的博主去脚本里找了好久qwq后来在群里问了相关有经验的人才知道——这只是unity打开太久的一个正常反应(???表示无奈),关闭重新打开unity就好了,当时的报错如下图(大家遇到这个错误不要怕啊,,)
好了言归正传,博主昨天很奇妙的在unity里的vuforia文件里发现了一个VirtualButton的prefab,这是高通平台提供的一个功能,里面自带了一些接口和方法,需要我们来调用。那么,这个究竟是个什么东西呢?
对比普通的UI组件
虚拟按钮和普通的UI中的按钮不一样,普通的按钮是在电脑屏幕上或者手机屏幕上进行点击,从而实现基本事件响应;而虚拟按钮是在现实世界中你的识别图上的某个你设定的位置范围内进行点选,实现基本事件的响应。类似 下图:蓝色的按钮就是虚拟按钮,颜色和材质是可以修改的
当然,同时,这也就要求识别图的清晰度要很高,才能准确的进行事件响应。- 关于虚拟按钮的添加与基本设置
从vuforia文件中将VirtualButton的prefab拖入ImageTarget,成为其子物体。
在VirtualButton添加脚本组件VirtualButtonBehaviour,我一般把灵敏度设为high
将虚拟按钮拖到图片上的对应位置,还有就是按钮的大小最好不要超过识别图片的10%- 脚本编写
在实际项目中,不需要计算按钮位置,直接使用Virtual Button的prefab即可。
在unity3d平台下,主要涉及到一个类和一个接口:
IVirtualButtonEventHandler。必须要实现这个接口。
其中这个接口包含两个方法:
public void OnButtonPressed(VirtualButtonAbstractBehaviour vb)
public void OnButtonReleased(VirtualButtonAbstractBehaviour vb)
跟普通按钮一样,点击和释放的两个功能。 因为是实现了一个接口,所以这两个方法必须都有基础的实现,要不然会报错。当事件处理程序被调用时,您将通过一个实例的虚拟按钮,包括按钮的名称。通过这种方式,可以应对不同的按钮事件。虚拟按钮示例应用程序的一个完整的例子:用虚拟按钮实现茶壶材质的变化——
指定m_TeapotMaterials1数组0元素为default材质,数组1元素为red材质。