1、打开 Unity ,新建一个工程,具体如下图
2、在工程中导入一个 视频文件,作为待会视频播放文件,具体如下图
3、在场景中添加 一个 RawImage 作为视频播放的载体,添加2个 Text,分别用来显示视频名称和视频播放时间, 添加一个 Slider,用来显示视频播放进度和控制视频播放进度,合理的布局各个UI元素,具体如下图
4、在工程中添加两个脚本,ToPlayVideo 脚本用来播放视频使用,SliderEvent 脚本用来控制视频的播放进度,具体如下图
5、ToPlayVideo 脚本具体代码和代码内容如下
6、ToPlayVideo 脚本具体内容如下:using UnityEngine;using UnityEngi荏鱿胫协ne.UI;using UnityEngine.Video;public class ToPlayVideo : MonoBehaviour { public VideoClip videoClip; // 视频的文件 参数 public Text videoTimeText; // 视频的时间 Text public Text videoNameText; // 视频的名字 Text public Slider videoTimeSlider; // 视频的时间 Slider //定义参数获取VideoPlayer组件和RawImage组件 internal VideoPlayer videoPlayer; private RawImage rawImage; // Use this for initialization void Start() { //获取场景中对应的组件 videoPlayer = this.GetComponent<VideoPlayer>(); rawImage = this.GetComponent<RawImage>(); videoPlayer.clip = videoClip; videoNameText.text = videoClip.name; clipHour = (int)videoPlayer.clip.length / 3600; clipMinute = (int)(videoPlayer.clip.length - clipHour * 3600) / 60; clipSecond = (int)(videoPlayer.clip.length - clipHour * 3600 - clipMinute * 60); videoPlayer.Play(); } // Update is called once per frame void Update() { //如果videoPlayer没有对应的视频texture,则返回 if (videoPlayer.texture == null) { return; } //把VideoPlayerd的视频渲染到UGUI的RawImage rawImage.texture = videoPlayer.texture; ShowVideoTime(); } /// <summary> /// 显示当前视频的时间 /// </summary> private void ShowVideoTime() { // 当前的视频播放时间 currentHour = (int)videoPlayer.time / 3600; currentMinute = (int)(videoPlayer.time - currentHour * 3600) / 60; currentSecond = (int)(videoPlayer.time - currentHour * 3600 - currentMinute * 60); // 把当前视频播放的时间显示在 Text 上 videoTimeText.text = string.Format("{0:D2}:{1:D2}:{2:D2} / {3:D2}:{4:D2}:{5:D2}", currentHour, currentMinute, currentSecond, clipHour, clipMinute, clipSecond); // 把当前视频播放的时间比例赋值到 Slider 上 videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length); } /// <summary> /// 当前的 Slider 比例值转换为当前的视频播放时间 /// </summary> private void SetVideoTimeValueChange() { videoPlayer.time = videoTimeSlider.value * videoPlayer.clip.length; } // 当前视频的总时间值和当前播放时间值的参数 private int currentHour; private int currentMinute; private int currentSecond; private int clipHour; private int clipMinute; private int clipSecond;}
7、SliderEvent 脚本具体代码和代码内容如下
8、SliderEvent脚本具体内容如下:using UnityEngine;using UnityEngin髫潋啜缅e.EventSystems;/// <summary>/// 继承 拖拽接口/// </summary>public class SliderEvent : MonoBehaviour, IDragHandler{ [SerializeField] private ToPlayVideo toPlayVideo; // 视频播放的脚本 // Use this for initialization void Start () { } // Update is called once per frame void Update () { } /// <summary> /// 给 Slider 添加 拖拽事件 /// </summary> /// <param name="eventData"></param> public void OnDrag(PointerEventData eventData) { SetVideoTimeValueChange(); } /// <summary> /// 当前的 Slider 比例值转换为当前的视频播放时间 /// </summary> private void SetVideoTimeValueChange() { toPlayVideo.videoPlayer.time = toPlayVideo.videoTimeSlider.value * toPlayVideo.videoPlayer.clip.length; }}
9、脚本编译正确,回到Unity,把 ToPlayVideo 挂载到 RawImage 上并对应赋值,具体如下图
10、把 SliderEvent 挂载到 VideoTimeSlider 上并对应赋值,具体如下图
11、运行场景,视频名称,视频播放时间,并可以使用Slider控制播放进度,具体如下图