Unity实现Image图片显示视频 、灵活配置控制视频播放(视频格式为MovieTexture)

一、编写(视频格式为MovieTexture)视频控制脚本

/***
*	Title:" " 项目
*		主题:实现控制moveTexture格式的视频
*	Description:
*		功能:注意:如果没有开启循环播放,则第一次播放完毕后,需要调用一下“停止视频”方法,在调用播放视频方法即可播放视频
*	Date:2019
*	Version:0.1版本
*	Author:Coffee
*	Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

namespace Control
{
	public class Ctrl_MoveTexture : MonoBehaviour
	{
        public MovieTexture movieTexuter;                                       //视频贴图
        public AudioClip audioClip;                                             //视频音频 
        public Material movieMat;                                               //显示视频的材质球
        public bool isLoop = false;                                             //是否开启循环播放
       

        private AudioSource audioSource;//音频组件

        void Start()
	{
            if (movieTexuter != null)
            {
                movieTexuter.loop = isLoop;

                audioSource = this.gameObject.AddComponent<AudioSource>();
                if (audioSource!=null)
                {
                    if (audioClip!=null)
                    {
                        audioSource.clip = audioClip;
                    }
                    else
                    {
                        Debug.LogError(GetType() + "/Start()/" + audioClip + " 音频资源不存在,请添加!!!");
                    }
                   
                }
                else
                {
                    Debug.LogError(GetType() + "/Start()/" + audioSource + " 音频组件自动添加不失败!!!");
                }

                this.gameObject.GetComponent<Image>().material = movieMat;
                if (movieMat != null)
                {
                    movieMat.color = new Color32(255, 255, 255, 255);
                }
                else
                {
                    Debug.LogError(GetType() + "/Start()/" + movieMat + " 材质球不存在,请添加!!!");
                }  
            }
            else
            {
                Debug.LogError(GetType() + "/Start()/" + movieTexuter + " 视频不存在,请添加!!!");
            }
	}

        //播放视频
        public void Play()
        {
            movieTexuter.Play();
            audioSource.Play();
        }

        //暂停视频
        public void Pause()
        {
            movieTexuter.Pause();
            audioSource.Pause();
        }

        //停止视频
        public void Stop()
        {
            movieTexuter.Stop();
            audioSource.Stop();
        }

	}//Class_end
}

二、编写测试控制视频播放的脚本

/***
*	Title:" " 项目
*		主题:测试视频播放脚本
*	Description:
*		功能:XXX
*	Date:2019
*	Version:0.1版本
*	Author:Coffee
*	Modify Recoder:
*/

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Control;

namespace Test
{
	public class TestPlayMovieTextures : MonoBehaviour
	{
        public GameObject movImage;//挂在视频控制脚本的对象
        private Ctrl_MoveTexture moveTexture;//视频控制脚本

	void Start()
	{
            if (movImage != null)
            {
                moveTexture = movImage.GetComponent<Ctrl_MoveTexture>();
            }
	}


        void Update()
        {
            //开始播放
            if (Input.GetKeyDown(KeyCode.P))
            {
                moveTexture.Play();
            }
            //暂停播放
            if (Input.GetKeyDown(KeyCode.L))
            {
                moveTexture.Pause();
            }

            //停止播放
            if (Input.GetKeyDown(KeyCode.S))
            {
                moveTexture.Stop();
            }



        }

    }//Class_end
}

三、挂载脚本,进行测试

①给需要展示视频的image组件添加 视频控制脚本(Ctrl_MoveTexture.cs),并且制定对应内容,如下图所示:

②新建一个空物体,用来挂载测试视频控制的脚本,如下所示:

③注意:这里的材质球设置如下

效果如下所示:

项目整个工程文件下载地址:https://download.csdn.net/download/xiaochenxihua/11150025

注意:参考《Unity3D/2D》游戏开发从0到1 第17章

猜你喜欢

转载自blog.csdn.net/xiaochenXIHUA/article/details/89643362
今日推荐