音乐播放器UGUI

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
public class BoFangQi : MonoBehaviour
{
    public Text videoTimeText;          // 视频的当前时间 Text
    public Text videoNameText;          // 视频的总时长 Text
    public Slider videoTimeSlider;      // 视频的时间 Slider
    // 定义参数获取VideoPlayer组件和RawImage组件
    internal VideoPlayer videoPlayer;
    private RawImage rawImage;
    // 当前视频的总时间值和当前播放时间值的参数
    private int currentHour;
    private int currentMinute;
    private int currentSecond;
    /// <summary>
    /// 总时间
    /// </summary>
    private int zongHour, zongMinu, zongSecond;
    private bool isPlay = true;          //是否正在播放视频
    public Button playPauseButton;       //播放暂停按钮
    public Button stopButton;            //停止播放按钮
   
    // Use this for initialization
    void Start()
    {
        //清空文本
        videoNameText.text = "";
        videoTimeText.text = "";

        //获取场景中对应的组件
        videoPlayer = this.GetComponent<VideoPlayer>();
        rawImage = this.GetComponent<RawImage>();
        videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
        videoPlayer.SetTargetAudioSource(0, this.GetComponent<AudioSource>());
        videoPlayer.playOnAwake = false;
        videoPlayer.IsAudioTrackEnabled(0);

        playPauseButton.onClick.AddListener(PlayOrPause);
        stopButton.onClick.AddListener(StopVideo);
    }

    // Update is called once per frame
    void Update()
    {

        //把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}",
            currentHour, currentMinute, currentSecond);
        // 把当前视频播放的时间比例赋值到 Slider 上
        // videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);
        videoTimeSlider.value  =(float)(videoPlayer.time/( videoPlayer.frameCount / videoPlayer.frameRate));
        ShowVideoLength();//视频总时长
    }

    /// <summary>
    /// 显示视频的总时长
    /// </summary>
    /// <param name="videos">当前视频</param>
    void ShowVideoLength()
    {
        zongHour = ((int)(videoPlayer.frameCount / videoPlayer.frameRate)) / 3600;
        zongMinu = (int)(((int)(videoPlayer.frameCount / videoPlayer.frameRate)) - zongHour * 3600) / 60;
        zongSecond = (int)(((int)(videoPlayer.frameCount / videoPlayer.frameRate)) - zongHour * 3600 - zongMinu * 60);
        if (videoTimeText.text!= "00:00:00")
        {
            videoNameText.text = string.Format("{0:D2}:{1:D2}:{2:D2} ",
            zongHour, zongMinu, zongSecond);
        }
       // videoNameText.text =( (int)(videoPlayer.frameCount / videoPlayer.frameRate)).ToString();
    }


    /// <summary>
    /// 视频播放暂停
    /// </summary>
    void PlayOrPause()
    {
        //如果视频片段不为空,并且视频画面没有播放完毕
        if (videoPlayer.url != null && (ulong)videoPlayer.frame < videoPlayer.frameCount)
        {
            //如果视频正在播放
            if (isPlay)
            {
                videoPlayer.Pause();
                isPlay = false;
            }
            else
            {
                videoPlayer.Play();
                isPlay = true;
            }
        }
    }

    void StopVideo()
    {
        videoPlayer.Stop();
       // videoTimeSlider.gameObject.SetActive(false);
        videoNameText.text = "";
        videoTimeText.text = "";
        isPlay = true;
    }
}

通过RawImage和Slider来控制视频进度

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值