1.在3D项目的场景中点击右键->UI->Canvas,创建Canvas会自动出现EventSystem。
2.在Canvas中右键->UI->Raw Image,创建Raw Image用来放置需要播放的视频。
3.如果要Raw Image能播放视频,需要在Raw Image中点击Add Component添加Video Player组件。
4.在Assets中加入要播放的视频,然后右键->Create->Render Texture,创建Render Texture重命名为video,将Size改为1024*1024。
5.在Raw Image的Video Clip中加入视频,在Target Texture中添加刚创建的video(Render Texture)。
6. 在Raw Image右键->UI->Legacy->Button,创建一个Button,重命名为pause,将pause下的Text改为“暂停”,将Font Style改为Bold, Font Size改为30,pause的高度改为50。
7.在Assets中右键->Create->Folder,创建文件夹重命名为Scripts,在Scripts中右键->Create->C# Script,重命名为Movie。
8. Movie代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class Movie : MonoBehaviour
{
public Text text_PlayOrPause;
public Button button_PlayOrPause;
private VideoPlayer videoPlayer;
private RawImage rawImage;
private int flag = 0;
void Start()
{
videoPlayer = this.GetComponent<VideoPlayer>();
rawImage = this.GetComponent<RawImage>();
button_PlayOrPause.onClick.AddListener(PlayorPause);
}
void Update()
{
if(flag == 0)
{
if(videoPlayer.texture == null)
{
return;
}
else
{
rawImage.texture = videoPlayer.texture;
flag++;
}
}
}
void PlayorPause()
{
if(videoPlayer.isPlaying == true)
{
videoPlayer.Pause();
text_PlayOrPause.text = "播放";
Time.timeScale = 0;
}
else
{
videoPlayer.Play();
text_PlayOrPause.text = "暂停";
}
}
}
9.将Movie拖入Raw Image,Text_Play Or Pause设置为pause下的Text,Button_Play Or Pause设置为pause。
10.如果想播放的视频是正常的效果,需要更改Raw Image的高和宽,本视频更改为宽700,高350(具体的视频进行对应的修改),如果没有达到想要的效果,可以在左侧的Scene中点击第四个工具图标进行视频的缩放。更改宽高后再缩放,就可以保持宽高比。
11.如果想要视频能拖动进度条,需要在Raw Image中右键->UI->Slider,创建Slider,更改Slider的长度(在左侧的Scene中使用第五个工具图标),调整其处于视频下边的位置。点击Slider->Fill Area->Fill,更改Fill的color为绿色。
12. 在Scripts中右键->Create->C# Script,重命名为VideoPlayerControl。
VideoPlayerControl代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoPlayerControl : MonoBehaviour
{
public VideoPlayer videoPlayer;
public Slider slider;
private bool isDragging;
void Start()
{
// 注册滑动条的拖动事件
slider.onValueChanged.AddListener(OnSliderValueChanged);
}
void Update()
{
// 如果正在拖动滑动条,则不更新时间
if (!isDragging)
{
slider.value = (float)videoPlayer.time / (float)videoPlayer.length;
}
}
// 当滑动条的值发生改变时执行
void OnSliderValueChanged(float value)
{
videoPlayer.time = videoPlayer.length * value;
}
// 开始拖动滑动条时执行
public void OnSliderDragBegin()
{
isDragging = true;
videoPlayer.Pause();
}
// 结束拖动滑动条时执行
public void OnSliderDragEnd()
{
isDragging = false;
videoPlayer.Play();
}
}
13.将VideoPlayerControl拖入Raw Image,Video Player设置为Raw Image,Slider设置为Slider。
14.点击运行项目就可以播放视频了,在滑块中点击相应位置就可以更改视频进度了,将视频暂停后拖动进度条更方便,视频播放时拖动有可能会卡顿。