繁体   English   中英

如果在原始图像上单击鼠标左键,我该如何设置?

[英]How can I set to do something when left clicked on a raw image?

我的场景中有多个rawImage,每个rawImage都是视频,即电影纹理。

我想要做的是,当我左键单击鼠标按钮时,只有单击的rawImage播放视频,但似乎当我左键单击任何地方时,所有视频/ movieTexture / rawImage同时播放。


public class video : MonoBehaviour {

    public MovieTexture movie;
    private AudioSource audio;

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

        GetComponent<RawImage> ().texture = movie as MovieTexture;
        audio = GetComponent<AudioSource> ();
        audio.clip = movie.audioClip;
        movie.Play ();
        audio.Play ();

        if (Input.GetMouseButtonDown(0)&& movie.isPlaying)
            movie.Stop ();
        else if (Input.GetMouseButtonDown(0) && !movie.isPlaying)
            movie.Play ();  
    }

}   

您在脚本中缺少的是检查鼠标单击的位置,我们希望在用户按下时排除所有那些不在鼠标下的视频。

public class video : MonoBehaviour {

public MovieTexture movie;
private AudioSource audio;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

    GetComponent<RawImage> ().texture = movie as MovieTexture;
    audio = GetComponent<AudioSource> ();
    audio.clip = movie.audioClip;
    movie.Play ();
    audio.Play ();

    if (Input.GetMouseButtonDown(0)){
        RectTransform r = transform.GetComponent<RectTransform>(); //Get's reference to RectTransform
        Vector3 size = new Vector3(r.rect.size.x * r.localScale.x, r.rect.size.y * r.localScale.y, 0); //Size in pixels (scale * default size)
        Vector3 pos = r.localPosition + new Vector3(Screen.width/2f, Screen.height/2f, 0)-size/2; //Position in pixels from the bottom-left corner of Image 
        //(r.localPosition is from the center of screen, that is why I substracted half of
        //the screen and minus half of size of the Image because r.localPosition anchor by default is in the center of Image
        Vector3 mousePos = Input.mousePosition;
        if (mousePos.x > pos.x && mousePos.x < pos.x + size.x && mousePos.y > pos.y && mousePos.y < pos.y + size.y) //This is basic logic of testing if point is inside rect
           if(movie.isPlaying) movie.Stop (); else movie.Play (); 
    }
}
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM