Unity學習 — VideoPlayer控制視頻播放、暫停、上下選擇播放!



本文提供詳細教程

記錄遇到的難點並幫助同行的朋友們

堅持以最簡單的方法傳授和把更好的閱讀體驗帶給你們!


一:效果預覽

在這裏插入圖片描述



二:實現

  1;在Unity創建空的場景

1,在空的場景裏創建RawImage,並在此基礎上添加VideoPlayer組件
在這裏插入圖片描述

  2;在RawImage下創建3個按鈕

1,標清所起的作用,並把位置設置好
在這裏插入圖片描述
在這裏插入圖片描述

  3;拖進幾個視頻素材

這裏我找的素材比較多,5個了
在這裏插入圖片描述



三:腳本

  1;創建腳本

  2;編寫代碼

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

/// <summary>
/// Jerry代碼編寫
/// </summary>
public class VideoController : MonoBehaviour
{
    //設置VideoPlayer、RawImage和當前播放視頻索引參數
    private VideoPlayer videoPlayer;
    private RawImage rawImage;
    private int currentClipIndex;
    //設置相關文本和按鈕參數以及視頻列表
    public Text text_PlayOrPause;
    public Button button_PlayOrPause;
    public Button button_Pre;
    public Button button_Next;
    public VideoClip[] videoClips;

    void Start()
    {
        //獲取VideoPlayer和RawImage組件,以及初始化當前視頻索引
        videoPlayer = this.GetComponent<VideoPlayer>();
        rawImage = this.GetComponent<RawImage>();
        currentClipIndex = 0;
        //設置相關按鈕監聽事件
        button_PlayOrPause.onClick.AddListener(OnPlayOrPauseVideo);
        button_Pre.onClick.AddListener(OnPreVideo);
        button_Next.onClick.AddListener(OnNextVideo);
    }

    // Update is called once per frame
    void Update()
    {
        //沒有視頻則返回,不播放
        if (videoPlayer.texture == null)
        {
            return;
        }
        //渲染視頻到UGUI上
        rawImage.texture = videoPlayer.texture;
    }

    /// <summary>
    /// 播放和暫停當前視頻
    /// </summary>
    private void OnPlayOrPauseVideo()
    {
        //判斷視頻播放情況,播放則暫停,暫停就播放,並更新相關文本
        if (videoPlayer.isPlaying == true)
        {
            videoPlayer.Pause();
            text_PlayOrPause.text = "播放";
        }
        else
        {
            videoPlayer.Play();
            text_PlayOrPause.text = "暫停";
        }
    }

    /// <summary>
    /// 切換上一個視頻
    /// </summary>
    private void OnPreVideo()
    {
        //視頻列表減一播放上一個視頻,並進行避免越界操作
        currentClipIndex -= 1;
        if (currentClipIndex < 0)
        {
            currentClipIndex = videoClips.Length - 1;
        }
        videoPlayer.clip = videoClips[currentClipIndex];
        text_PlayOrPause.text = "暫停";
    }

    /// <summary>
    /// 切換下一個視頻
    /// </summary>
    private void OnNextVideo()
    {
        //視頻列表加一播放下一個視頻,並進行避免越界操作
        currentClipIndex += 1;
        currentClipIndex = currentClipIndex % videoClips.Length;
        videoPlayer.clip = videoClips[currentClipIndex];
        text_PlayOrPause.text = "暫停";
    }
}

  3;代碼預覽

  4;腳本掛載

在這裏插入圖片描述

  5;變量賦值

在這裏插入圖片描述



四:結束,開始運行

在這裏插入圖片描述

擁有自己的服務器

讓開發工作不再難

點擊此處領取----阿里產品優惠券大禮包 (新手必得享超值優惠)


一:ESC服務器優缺點
二:爲什麼要用阿里雲服務器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章