7.3.6 编写虚拟按钮功能脚本

7.3.6 编写虚拟按钮功能脚本

本项目中希望实现的交互效果为:当用户遮挡住各个按钮时,实现对应的效果。即分别实现以下功能:播放前一首音乐、开始播放、暂停播放、播放后一首音乐。为此,需要编写脚本实现对虚拟按钮的控制。

在Assets面板中创建文件夹“Scripts”,新建脚本“My VirtualButton.cs”,将其拖至Im.age Target对象上,成为脚本组件。

双击打开My VirtualButton脚本,对其进行编辑。由于虚拟按钮是Vuforia的功能,因此需要在脚本中继承一个虚拟按钮接口。首先需要引入Vuforia命名空间,添加语句:using Vuforia;如图7.24所示。

图7.24 添加Vuforia命名空间

在MonoBehaviour后面添加一个接口继承:IVirtualButton Event Handler。并在后者名称上单击,选择实现接口,即可得到OnButtonPressed(按钮按下)和OnButton Released(按钮释放)两个方法。将这两个方法移动到代码最后,如图7.25所示。

图7.25 实现接口后得到的两个方法

对虚拟按钮进行初始化。定义字段vbs,并编写Start()方法,代码如下所示。

如前所述,本项目中希望实现的交互效果是:当用户遮挡虚拟按钮时,会触发相应的事件,如遮挡“play”按钮时,会开始播放音乐。当用户解除对虚拟按钮的遮挡(例如把手从按钮上方移开)后,并不会对当前正在进行的事件有任何影响。因此只需编写OnButtonPressed()方法即可。

首先增加定义以下字段变量,其中,My AudioClip用于实现播放列表:

然后,编写OnButtonPressed()方法,这里使用switch语句实现选择结构,分别为每个虚拟按钮实现对应的动作状态(暂停/播放/下一首)、音乐曲目代码。代码如图7.26所示。

图7.26 编写OnButtonPressed()方法

将脚本附加到Unity之后,即可在Image Target的Inspector面板中直接设置此脚本组件的公共字段,此处不作赘述。

最后,保存项目,进行测试。能够成功运行,并实现虚拟按钮对应的功能。将项目打包创建为“*.apk”文件,导入Android手机即可运行。

本例讲解了使用虚拟按钮实现“AR留声机”的效果,具有一定的交互性和趣味性。在此基础之上,也可以增加一些动画效果,例如留声机唱壁、唱盘/唱片与播放状态相对应的动画,可以使用Unity的动画系统,或编写脚本的方法,有兴趣的读者可以尝试实现更多的动画和互动效果。