unity 播放外部视频

摘要: Unity支持的播放视频格式有.mov、.mpg、.mpeg、.mp4、.avi和.asf。只需将对应的视频文件拖拽入Project视图即可,它会自动生成对应的MovieTexture对象。

1.Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上。第二种是在GUI层面上播放视频。播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类

//电影纹理

    public MovieTexture movTexture;



    void Start()

    {

        transform.localScale = new Vector3(1, 1, 1);

        //设置当前对象的主纹理为电影纹理

        renderer.material.mainTexture = movTexture;

        //设置电影纹理播放模式为循环

        movTexture.loop = true;

    }



    void OnGUI()

    {

        if (GUILayout.Button("播放/继续"))

        {

            //播放/继续播放视频

            if (!movTexture.isPlaying)

            {

                movTexture.Play();

            }

        }

        if (GUILayout.Button("暂停播放"))

        {

            //暂停播放

            movTexture.Pause();

        }

        if (GUILayout.Button("停止播放"))

        {

            //停止播放

            movTexture.Stop();

        }

    }

  

第二种播放视频的方式基于GUI。大家可以把刚刚创建的Plane对象以及世界定向光删除,直接将脚本绑定在摄像机对象中即可。脚本控制基本上与挂在Plane上面一致。

2.unity播放外部视频,可以用WWW类来加载视频,里面涉及到协程的知识。

协程相当于线程,这里有一篇文章深入讲解协程。http://dsqiu.iteye.com/blog/2029701

协程不是线程,也不是异步执行的。协程和 MonoBehaviour 的 Update函数一样也是在MainThread中执行的。使用协程你不用考虑同步和锁的问题。

这里还有一篇文章讲到了协程 http://blog.csdn.net/huang9012/article/details/38492937

//电影纹理

    public MovieTexture movTexture;



    void Start()

    {

        //设置电影纹理播放模式为循环

        //movTexture.loop = true;

        StartCoroutine(LoadMovie());

        Debug.Log("download complete");

        

    }



    IEnumerator LoadMovie()

    {

        //配置文件路径

        //string configPath = "file:///" + Application.dataPath + "/Config/config.txt";

        string configPath = "E:/config.txt";

        //视频文件路径

        //string url = "file:///" + Application.dataPath + "/Movies/oldboy.ogv";

        //string url = "file:///" + "E:/U3dExercise/oldboy.ogv";

        string url = "";

        using (StreamReader reader = new StreamReader(configPath))

        {

            url = reader.ReadToEnd().Trim();

        }



        //WWW是一个Unity开发中非常常用到的工具类,主要提供一般Http访问的功能,以及动态从网上下载图片、声音、视频Unity资源等。

        //WWW里面参数必须要加上"file:///"作为前缀  file:///是协议头,能解析为本地文件路径

        //常用的有http://,ftp://,和file:///

        WWW www = new WWW("file:///" + url);

        movTexture = www.movie;

        while (!movTexture.isReadyToPlay)

        {

            Debug.Log(www.progress);

        }

        yield return www;

    }

    void OnGUI()

    {

        //绘制电影纹理

        GUI.DrawTexture(new Rect(0, 0, Screen.width, Screen.height), movTexture, ScaleMode.StretchToFill);

        if (GUILayout.Button("播放/继续"))

        {

            //播放/继续播放视频

            if (!movTexture.isPlaying)

            {

                movTexture.Play();

            }

        }

        if (GUILayout.Button("暂停播放"))

        {

            //暂停播放

            movTexture.Pause();

        }

        if (GUILayout.Button("停止播放"))

        {

            //停止播放

            movTexture.Stop();

        }

    }

  

你可能感兴趣的:(unity)