Unity VideoPlayer 视频名称时间Slider控制进度

 时间:2024-10-13 14:07:55

1、打开 Unity ,新建一个工程,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

2、在工程中导入一个 视频文件,作为待会视频播放文件,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

3、在场景中添加 一个 RawImage 作为视频播放的载体,添加2个 Text,分别用来显示视频名称和视频播放时间, 添加一个 Slider,用来显示视频播放进度和控制视频播放进度,合理的布局各个UI元素,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

4、在工程中添加两个脚本,ToPlayVideo 脚本用来播放视频使用,SliderEvent 脚本用来控制视频的播放进度,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

5、ToPlayVideo 脚本具体代码和代码内容如下

Unity VideoPlayer 视频名称时间Slider控制进度
Unity VideoPlayer 视频名称时间Slider控制进度
Unity VideoPlayer 视频名称时间Slider控制进度
Unity VideoPlayer 视频名称时间Slider控制进度

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 脚本具体代码和代码内容如下

Unity VideoPlayer 视频名称时间Slider控制进度
Unity VideoPlayer 视频名称时间Slider控制进度

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 上并对应赋值,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

10、把 SliderEvent 挂载到 VideoTimeSlider 上并对应赋值,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度

11、运行场景,视频名称,视频播放时间,并可以使用Slider控制播放进度,具体如下图

Unity VideoPlayer 视频名称时间Slider控制进度
  • 一不小心占领整个星球是什么歌
  • 猎人荒野的呼唤狗怎么用
  • flask网站怎么使用https连接
  • 天狼星加密视频怎么翻录
  • 如何解决Windows更新错误0x8024a112?
  • 热门搜索
    安全出行我做主手抄报 关于普法的手抄报 关于我爱读书手抄报 手抄报字体设计 关于节日的英语手抄报 手抄报名字 语文知识手抄报图片 快乐的暑假手抄报 关于三月三的手抄报 我的寒假我做主手抄报