一、编写(视频格式为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章