Unity+Vuforia:为Image Target添加点击播放音频按钮求助
分步实现指南
1. 基础资源与环境准备
- 将音频文件(MP3/WAV格式)拖入Unity项目,在Inspector面板把Load Type设为
Streaming,避免加载卡顿。 - 在你的AR角色模型上添加
AudioSource组件:取消勾选Play On Awake,把音频文件拖到AudioSource的Audio Clip字段。
2. 配置Vuforia Image Target
- 确保Image Target已正确绑定目标数据库和对应识别图,将AR角色设为Image Target的子物体,默认禁用角色GameObject,扫描到Target时会自动激活显示。
3. 创建交互按钮
选项A:全屏UI按钮
- 在Hierarchy面板右键选择UI > Button,自动生成Canvas和EventSystem(无则自动创建)。
- 调整按钮位置、大小,修改按钮Text为“播放角色声音”这类提示,默认禁用按钮GameObject。
选项B:绑定角色的3D按钮
- 在角色附近创建Cube作为按钮载体,添加
Box Collider(勾选Is Trigger)和Button组件(需确保已导入Unity UI模块)。 - 将3D按钮设为Image Target的子物体,默认禁用。
4. 核心脚本实现
新建C#脚本ARAudioController.cs,代码如下:
using UnityEngine; using Vuforia; public class ARAudioController : MonoBehaviour { [SerializeField] private AudioSource characterAudioSource; [SerializeField] private GameObject audioButton; private void Start() { var trackable = GetComponent<TrackableBehaviour>(); if (trackable != null) { trackable.RegisterOnTrackableStatusChanged(OnTrackableStatusChanged); } if (audioButton != null) { audioButton.SetActive(false); } } private void OnTrackableStatusChanged(TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED) { audioButton.SetActive(true); } else { audioButton.SetActive(false); characterAudioSource.Stop(); } } public void PlayCharacterAudio() { if (characterAudioSource != null && !characterAudioSource.isPlaying) { characterAudioSource.Play(); } } }
5. 绑定脚本与事件
- 把
ARAudioController脚本拖到Image Target GameObject上。 - 在Inspector面板的ARAudioController组件中,将角色的
AudioSource拖入Character Audio Source字段,将按钮GameObject拖入Audio Button字段。 - 选中按钮GameObject,在Button组件的
On Click()列表点击+号,把Image Target拖到对象框,选择ARAudioController > PlayCharacterAudio()。
6. 测试注意事项
- 用Vuforia AR Camera替换默认Main Camera,确保Vuforia配置正确。
- 编辑器内可使用Vuforia模拟模式测试,或打包到移动设备测试(无需额外权限,确保音频文件正常打包)。
- 若音频无声音,检查AudioSource的Volume是否非0、音频文件是否正常、设备音量是否开启。
内容的提问来源于stack exchange,提问作者Krugere
相关产品推荐
相关产品推荐

