Unity 3D - 多个目标无效

时间:2015-01-15 00:28:19

标签: image unity3d target

我在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。

我做错了什么?

谢谢!

1 个答案:

答案 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。 鼠标事件可以在移动设备上运行,因此您可以安全地使用它。