Unity 2021.3.10f1中Vuforia图像目标播放视频适配脚本求助
Unity 2021.3.10f1 + Vuforia 图像目标触发视频播放适配脚本
Vuforia在新版本中已弃用OnTrackingFound和OnTrackingLost方法,改用ITrackableEventHandler接口处理跟踪状态变化。以下是适配的最简脚本,实现图像目标被检测到时自动播放视频,丢失跟踪时暂停视频:
适配脚本代码
using UnityEngine; using Vuforia; [RequireComponent(typeof(TrackableBehaviour))] public class ImageTargetVideoPlayer : MonoBehaviour, ITrackableEventHandler { [SerializeField] private VideoPlayer targetVideoPlayer; private TrackableBehaviour trackableBehaviour; void Start() { trackableBehaviour = GetComponent<TrackableBehaviour>(); if (trackableBehaviour != null) { trackableBehaviour.RegisterTrackableEventHandler(this); } // 初始状态暂停视频 if (targetVideoPlayer != null) { targetVideoPlayer.playOnAwake = false; targetVideoPlayer.Pause(); } } public void OnTrackableStateChanged( TrackableBehaviour.Status previousStatus, TrackableBehaviour.Status newStatus) { if (targetVideoPlayer == null) return; if (newStatus == TrackableBehaviour.Status.DETECTED || newStatus == TrackableBehaviour.Status.TRACKED || newStatus == TrackableBehaviour.Status.EXTENDED_TRACKED) { // 跟踪到目标,播放视频 targetVideoPlayer.Play(); } else { // 丢失跟踪,暂停视频 targetVideoPlayer.Pause(); } } }
使用步骤
- 在Unity场景中添加ImageTarget对象,配置好你的图像目标资源
- 给视频播放对象(UI的RawImage或3D对象均可)添加
VideoPlayer组件,导入并设置好视频源 - 将上述脚本挂载到ImageTarget对象上
- 在Inspector面板中,把
VideoPlayer组件拖到脚本的Target Video Player字段中 - 确保已正确配置Vuforia环境:导入Vuforia包、设置App Key、添加ARCamera
注意事项
- 若使用UI显示视频,需将
VideoPlayer的Render Mode设置为Render Texture,并将生成的Render Texture赋值给RawImage的Texture属性 - 视频文件建议放在
StreamingAssets文件夹下,避免打包后无法读取 - 可根据需求调整
OnTrackableStateChanged中的状态判断逻辑,比如仅在TRACKED状态下触发播放
内容的提问来源于stack exchange,提问作者Netomaster23
相关产品推荐
相关产品推荐

