Video Player主控脚本
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class VideoPlayerTest : MonoBehaviour
{
//视频播放组件
public VideoPlayer videoPlayer;
//视频播放进度显示的进度条
public Slider slider;
//是否更新进度条显示的视频进度
public bool isChangeProgress = false;
private void Start()
{
InitAddEventHandle();
isChangeProgress = true;
}
private void Update()
{
if (isChangeProgress)
{
UpdateSliderProgress();
}
}
//更新Slider显示的值
void UpdateSliderProgress()
{
slider.value = float.Parse(videoPlayer.frame.ToString()) / float.Parse(videoPlayer.frameCount.ToString());
}
//初始化,添加事件添加事件
void InitAddEventHandle()
{
//添加视频加载完成事件
videoPlayer.prepareCompleted += OnReadyCompleted;
//添加播放完成的事件
videoPlayer.loopPointReached += OnPlayFinished;
}
//改动视频进度
public void OnChangeSliderValue(float value)
{
videoPlayer.frame = long.Parse((value * videoPlayer.frameCount).ToString("0."));
}
//视频加载完成回调
private void OnReadyCompleted(VideoPlayer source)
{
print("我准备好了");
}
//视频播放完毕,循环播放时每次播放完都会执行
private void OnPlayFinished(VideoPlayer source)
{
print("我播放完了");
}
}
显示当前视频播放进度条Slider上的脚本
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class UISliderTest : MonoBehaviour, IPointerDownHandler,IPointerUpHandler
{
public VideoPlayerTest playerTest;
Slider slider;
private void Start()
{
slider = GetComponent<Slider>();
}
//添加改动进度条事件
void AddSliderEvent()
{
//slider.li
slider.onValueChanged.AddListener((float value) => playerTest.OnChangeSliderValue(value));
}
//移除事件
void RemoveSliderEvent()
{
slider.onValueChanged.RemoveAllListeners();
}
//鼠标在Slider上按下时
public void OnPointerDown(PointerEventData eventData)
{
playerTest.isChangeProgress = false;
AddSliderEvent();
}
//鼠标在Slider上抬起时
public void OnPointerUp(PointerEventData eventData)
{
playerTest.isChangeProgress = true;
RemoveSliderEvent();
}
}