Unity 自带的视频播放器VideoPlayer
1.显示视频时长在text显示出来
timeText.text = string.Format("{0} / {1}", ToTimeFormat((float)videoplayer.time), ToTimeFormat((float)videoplayer.length));
//时长用00:00显示
private string ToTimeFormat(float time)
{
int seconds = (int)time;
int minutes = seconds / 60;
seconds %= 60;
return string.Format("{0:D2}:{1:D2}", minutes, seconds);
}
2.滑动条跟着视频进度
progressSlider.value = (float)(videoplayer.time / videoplayer.length);
3.拖动滑动条
// 开始拖动视频进度条
progressSlider.OnEventTriggerEvent(EventTriggerType.PointerDown, s =>
{
videoplayer.Stop();
btn_Play.gameObject.SetActive(true);
btn_Pause.gameObject.SetActive(false);
});
//结束拖动视频进度条
progressSlider.OnEventTriggerEvent(EventTriggerType.PointerUp, s =>
{
btn_Play.gameObject.SetActive(false );
btn_Pause.gameObject.SetActive(true);
videoplayer.time = progressSlider.value * videoplayer.length;
videoplayer.Play();
});
public static class UIBehaviourExtension
{
/// <summary>
/// 添加EventTrigger事件监听
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="self"></param>
/// <param name="type"></param>
/// <param name="action"></param>
/// <returns></returns>
public static T OnEventTriggerEvent<T>(this T self, EventTriggerType type, UnityAction<BaseEventData> action) where T : UIBehaviour
{
var eventTrigger = self.GetComponent<EventTrigger>() ?? self.gameObject.AddComponent<EventTrigger>();
EventTrigger.Entry entry = new EventTrigger.Entry { eventID = type };
entry.callback.AddListener(action);
eventTrigger.triggers.Add(entry);
return self;
}
}
DEMO链接