Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果 |
您所在的位置:网站首页 › unity视频播放的容器 › Unity 使用VideoPlayer播放视频,实现播放,暂停,快进的效果 |
1. 首先先创建一个Render TexTure 在创建一个RawImage, 再把创建好的Render TexTure (我是随意起的名字,你们自己看着起) ,挂载到 RawImage 的Texture的地方 如下图所示
2.在创建Video Player组件 把Render Texture 挂上去(挂在Target Texture上面),Video Clip (可以直接把视频拖上去,也可以写脚本控制) 如下图
3.在给滑动条加上Event Trigger 组件,用一个开始拖拽的方法,一个结束拖拽的方法即可 两个方法在脚本里写的有,拖拽在上面即可
下面上代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class ShuiWenZhiShiButton : MonoBehaviour { public GameObject mv_obj; public VideoClip shipin1,shipin2; public VideoPlayer videoPlayer; public Button play_button; //播放按钮 public Button pause_button; //暂停按钮 public Text mv_length_text; //显示视频的长度 public Slider slider_kuajin; private bool isDrag; private int hour, minute, second; // 时 分 秒 // Start is called before the first frame update void Start() { Debug.Log (shipin1.length); //按钮1 button[0].onClick.AddListener(delegate { Photoenlable(0); if (mv_obj.activeSelf==false) { OnorOff_MVjiemian(true); } videoPlayer.clip = shipin1; }); //按钮2 button[1].onClick.AddListener(delegate { Photoenlable(1); if (mv_obj.activeSelf == false) { OnorOff_MVjiemian(true); } videoPlayer.clip = shipin2; }); //按钮3 button[2].onClick.AddListener(delegate { Photoenlable(2); }); } //打开或者关闭视频界面 public void OnorOff_MVjiemian(bool tra) { mv_obj.SetActive(tra); } //视频播放 public void MV_Play() { play_button.gameObject.SetActive(false); pause_button.gameObject.SetActive(true); videoPlayer.Play(); } //视频暂停 public void MV_Pause() { play_button.gameObject.SetActive(true); pause_button.gameObject.SetActive(false); videoPlayer.Pause(); } //显示视频的时间 public void ShiPin_Length() { hour = (int)videoPlayer.time / 3600; minute = ((int)videoPlayer.time - hour * 3600) / 60; second = (int)videoPlayer.time - hour * 3600 - minute * 60; mv_length_text.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); } /// 修改视频播放进度 private void ChangeVideoPlayTime() { if (isDrag == true) { videoPlayer.time = slider_kuajin.value*videoPlayer.clip.length; } } //修改进度条 public void XiuGaiJinDuTiao() { if (!isDrag) { slider_kuajin.value = (float)(videoPlayer.time / videoPlayer.clip.length); } } //开始拖拽 public void OnDragdrop() { isDrag = true; } //结束拖拽 public void OnEndDrag() { isDrag = false; videoPlayer .time = slider_kuajin.value* videoPlayer.clip.length; } // Update is called once per frame void Update() { if (videoPlayer.clip !=null) { ChangeVideoPlayTime(); XiuGaiJinDuTiao(); ShiPin_Length(); } } }
2.UI摆放结构
脚本挂在父物体上 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class Video_Player : MonoBehaviour { public GameObject mv_obj; public VideoClip shipin1; public VideoPlayer videoPlayer; public Button play_button; //播放按钮 public Button pause_button; //暂停按钮 public Button exit_button; //关闭界面 public Text mv_length_text; //显示视频的长度 public Slider slider_kuajin; private bool isDrag; private int hour, minute, second; // 时 分 秒 // Start is called before the first frame update void Start() { //videoPlayer = this.GetComponent(); Debug.Log(shipin1.length); videoPlayer.clip = shipin1; videoPlayer.Play(); play_button.onClick.AddListener(MV_Play); pause_button.onClick.AddListener(MV_Pause); exit_button.onClick.AddListener(delegate { OnorOff_MVjiemian(false); }); } //打开或者关闭视频界面 public void OnorOff_MVjiemian(bool tra) { mv_obj.SetActive(tra); } //视频播放 public void MV_Play() { play_button.gameObject.SetActive(false); pause_button.gameObject.SetActive(true); videoPlayer.Play(); } //视频暂停 public void MV_Pause() { play_button.gameObject.SetActive(true); pause_button.gameObject.SetActive(false); videoPlayer.Pause(); } //显示视频的时间 public void ShiPin_Length() { hour = (int)videoPlayer.time / 3600; minute = ((int)videoPlayer.time - hour * 3600) / 60; second = (int)videoPlayer.time - hour * 3600 - minute * 60; //mv_length_text.text = string.Format("{0:D2}:{1:D2}:{2:D2}", hour, minute, second); } /// 修改视频播放进度 private void ChangeVideoPlayTime() { if (isDrag == true) { videoPlayer.time = slider_kuajin.value * videoPlayer.clip.length; } } //修改进度条 public void XiuGaiJinDuTiao() { if (!isDrag) { slider_kuajin.value = (float)(videoPlayer.time / videoPlayer.clip.length); } } //开始拖拽 public void OnDragdrop() { isDrag = true; } //结束拖拽 public void OnEndDrag() { isDrag = false; videoPlayer.time = slider_kuajin.value * videoPlayer.clip.length; } // Update is called once per frame void Update() { if (videoPlayer.clip != null) { ChangeVideoPlayTime(); XiuGaiJinDuTiao(); //ShiPin_Length(); } } }
根据自己需要修改即可,感谢阅读
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |