unity3d - 即使在 Unity vuforia 中丢失目标后也播放视频?
问题描述
我有一个要求,当找到目标图像时,应该播放视频。现在,当目标图像丢失时,视频仍应播放。在这种情况下,我认为我必须将视频附加到AR Camera
,当找到目标图像时,它应该被激活并播放。但我很困惑。什么可能是这个问题的最佳解决方案。
我尝试了什么:
我将那些四边形(我正在播放视频的内部)与图像目标分开并将它们设置在相机前面(我有两个图像目标)。现在在里面DefaultTrackableEventHandler
我加了两个GameObject
public GameObject Quad1;
public GameObject Quad;
现在在Start
方法中我正在这样做:
Quad = GameObject.Find("Quad");
Quad1 = GameObject.Find("Quad1");
Quad.SetActive(false);
Quad1.SetActive(false);
现在在OnTrackingFound
方法内部我添加了以下内容:
if (mTrackableBehaviour.TrackableName == "myImage1")
{
Quad.SetActive(true);
playSound("sounds/maiplayback");
}
if(mTrackableBehaviour.TrackableName == "myImage2")
{
Quad1.SetActive(true);
playSound("sounds/mainplayback2");
}
和相同的代码,OnTrackingLost
因为即使目标丢失,我们也必须播放视频。但是当我这样做时,视频会在相机打开时开始播放。我被困住了。请给我建议。任何帮助将非常感激。谢谢你!
解决方案
每次场景加载时,Vuforia 都会调用 Trackable Lost,也许这就是问题所在。
我要修改这样的行为是将事件调用添加DefaultTrackableBehaviour
到其他脚本中的函数。
在这种情况下,我将添加对OnTrackableFound
使视频对象出现或开始播放的函数的调用,该视频应该像我认为您已经做的那样附加到 ARCamera。
当您开始播放视频时,会激活一个标志,因此当再次跟踪目标时,它不会与视频行为不端。然后你随心所欲地停止它。
像这样的东西。
bool playing = false;
public void PlayVideo ()
{
if (!playing)
{
playing = true;
Quad1.SetActive (true);
playSound ("sounds/mainplayback2");
}
}
public void StopVideo ()
{
if (playing)
{
playing = false;
Quad1.SetActive (false);
stopSound ();
}
}
在最坏的情况下,有一个附加了视频对象的第二个摄像头,这样 Vuforia 就无法扰乱您的视频行为,您可以随意将其关闭。
推荐阅读
- javascript - 如何在 JavaScript 中评估此表达式
- gpu - 我们可以在 GPU 上使用 pytorch scatter_
- model-view-controller - MVC - 应该有主视图、模型和控制器,还是应该是特定于实现的?
- java - Maven项目中的dll放在哪里
- c# - 在 C# 中使用 iso-8859-1 编码“–”
- light-4j - 如何在处理程序请求方法中解析动态路径参数?
- firebase - public FirebaseUser getCurrentUser() 是如何工作的?
- laravel - 如何在 Laravel 中编译 Bootstrap 主题的 Scss 文件
- wordpress - 是否可以为每个用户设置货币?
- android - 当我尝试在 Play 商店上传我的 Voip 应用程序时出现错误