我在Unity 3D for Android中制作应用程序,其中包括使用手机摄像头检测图案,然后它会显示一个平面(就像一个按钮),如果你点击它就会启动一个视频。
因此,我有4个不同的图像目标,有4种不同的图案,在每个图像目标内,它是一个在检测到图案时出现的平面。当您触摸飞机时,它会执行以下脚本:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class PlayVideo1 : MonoBehaviour
{
public string moviePath = "video1.mp4";
void Update () {
// Code for OnMouseDown in the iPhone. Unquote to test.
for (int i = 0; i < Input.touchCount; ++i) {
if (Input.GetTouch(i).phase.Equals(TouchPhase.Began)) {
Debug.Log("Starting Movie: " + moviePath);
Handheld.PlayFullScreenMovie (moviePath, Color.black, FullScreenMovieControlMode.Full);
Debug.Log("All Done!");
}
}
}
}
每个平面都有不同的脚本和不同的moviePath,例如:
平面1具有PlayVideo1.cs和moviePath&#34; video1.mp4&#34;。 平面2具有PlayVideo2.cs和moviePath&#34; video2.mp4&#34;。 平面3具有PlayVideo3.cs和moviePath&#34; video3.mp4&#34;。 飞机4有PlayVideo4.cs和moviePath&#34; video4.mp4&#34;。
然后当我用相机检测到4个图案中的一个并且当我点击它时按钮出现它总是播放相同的视频(&#34; video3.mp4&#34;例如),即使模式I&#39;与相机聚焦的是平面1或2。
我做错了什么?
谢谢!
答案 0 :(得分:0)
这是因为您的代码不会检查单击哪个平面。它目前正在做的只是检测是否有任何触摸输入。
将您的代码更改为以下
//On MouseUpAsButton is a Monobehaviour event that is called on every collider
//where the interaction is like a button (i.e. click down and release on the same collider)
public void OnMouseUpAsButton () {
Handheld.PlayFullScreenMovie (moviePath, Color.black, FullScreenMovieControlMode.Full);
}
另请注意,如果您使用Unity 4.6及更高版本,则必须在场景中将事件系统组件附加到SOME GameObject,否则 OnMouseUpAsButton 将不被打电话。
最后,Monobehvaiour还有很多其他有用的事件,包括 OnMouseEnter , OnMouseDown , OnMouseExit , OnMouseUp < / strong>等Link to Monobehaviour in Unity's Docs
P.S。 鼠标事件可以在移动设备上运行,因此您可以安全地使用它。