UGUI slider控制视频进度

概述

功能:显示视频进度;改变视频进度。

获取 进度条的拖动状态

脚本挂载到进度条对象上

using UnityEngine;
using UnityEngine.EventSystems;
public class SliderControl : MonoBehaviour, IDragHandler, IEndDragHandler, IBeginDragHandler
{
    
    
	//是否拖拽进度条(滑动条)
    public bool isDragMove; 
    public void OnDrag(PointerEventData eventData)
    {
    
    
        isDragMove = true;
    }

    public void OnEndDrag(PointerEventData eventData)
    {
    
    
        isDragMove = false;
    }

    public void OnBeginDrag(PointerEventData eventData)
    {
    
    
        isDragMove = true;
    }
}

进度更新 和 改变视频进度

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class VideoControl : MonoBehaviour
{
    
    
    public VideoPlayer videoPlayer;
    public SliderControl sliderControl;
    public Slider slider;
    bool isPrepare = false;//视频是否准备好

    void Start()
    {
    
    
        videoPlayer.Prepare();
        videoPlayer.prepareCompleted += VideoPlayer_prepareCompleted;
        slider.onValueChanged.AddListener(MoveSlider);
    }

    private void VideoPlayer_prepareCompleted(VideoPlayer source)
    {
    
    
        isPrepare = true;
    }

    private void MoveSlider(float arg0)
    {
    
    
    	//拖动进度条的时候 执行
        if (isPrepare && sliderControl.isDragMove)
        {
    
    
            videoPlayer.time = videoPlayer.length * arg0;
        }
    }

    void Update()
    {
    
    
        if (Input.GetKeyDown(KeyCode.P) && isPrepare)
            videoPlayer.Play();
		//更新数值 不执行拖动事件
        if (!sliderControl.isDragMove && isPrepare)
        {
    
    
            slider.value = (float)(videoPlayer.time / videoPlayer.length);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43796392/article/details/124809126
今日推荐