Unity3D在场景中播放可拖动进度条的视频

该文介绍了在Unity3D中创建并播放视频的步骤,包括创建Canvas和RawImage,添加VideoPlayer组件,设置RenderTexture,创建暂停按钮以及进度条控制,并提供了相应的C#脚本实现播放和暂停功能。
摘要由CSDN通过智能技术生成

1.在3D项目的场景中点击右键->UI->Canvas,创建Canvas会自动出现EventSystem。

2.在Canvas中右键->UI->Raw Image,创建Raw Image用来放置需要播放的视频。

3.如果要Raw Image能播放视频,需要在Raw Image中点击Add Component添加Video Player组件。

4.在Assets中加入要播放的视频,然后右键->Create->Render Texture,创建Render Texture重命名为video,将Size改为1024*1024。

 

5.在Raw Image的Video Clip中加入视频,在Target Texture中添加刚创建的video(Render Texture)。

 

6. 在Raw Image右键->UI->Legacy->Button,创建一个Button,重命名为pause,将pause下的Text改为“暂停”,将Font Style改为Bold, Font Size改为30,pause的高度改为50。

7.在Assets中右键->Create->Folder,创建文件夹重命名为Scripts,在Scripts中右键->Create->C# Script,重命名为Movie。

8. Movie代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class Movie : MonoBehaviour
{
    public Text text_PlayOrPause;
    public Button button_PlayOrPause;
    private VideoPlayer videoPlayer;
    private RawImage rawImage;
    private int flag = 0;

    void Start()
    {
        videoPlayer = this.GetComponent<VideoPlayer>();
        rawImage = this.GetComponent<RawImage>();
        button_PlayOrPause.onClick.AddListener(PlayorPause);
    }

    void Update()
    {
        if(flag == 0)
        {
            if(videoPlayer.texture == null)
            {
                return;
            }
            else
            {
                rawImage.texture = videoPlayer.texture;
                flag++;
            }
        }
    }

    void PlayorPause()
    {
        if(videoPlayer.isPlaying == true)
        {
            videoPlayer.Pause();
            text_PlayOrPause.text = "播放";
            Time.timeScale = 0;
        }
        else
        {
            videoPlayer.Play();
            text_PlayOrPause.text = "暂停";
        }
    }

}

9.将Movie拖入Raw Image,Text_Play Or Pause设置为pause下的Text,Button_Play Or Pause设置为pause。

10.如果想播放的视频是正常的效果,需要更改Raw Image的高和宽,本视频更改为宽700,高350(具体的视频进行对应的修改),如果没有达到想要的效果,可以在左侧的Scene中点击第四个工具图标进行视频的缩放。更改宽高后再缩放,就可以保持宽高比。

11.如果想要视频能拖动进度条,需要在Raw Image中右键->UI->Slider,创建Slider,更改Slider的长度(在左侧的Scene中使用第五个工具图标),调整其处于视频下边的位置。点击Slider->Fill Area->Fill,更改Fill的color为绿色。

12. 在Scripts中右键->Create->C# Script,重命名为VideoPlayerControl。

VideoPlayerControl代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;

public class VideoPlayerControl : MonoBehaviour
{
    public VideoPlayer videoPlayer;
    public Slider slider;

    private bool isDragging;

    void Start()
    {
        // 注册滑动条的拖动事件
        slider.onValueChanged.AddListener(OnSliderValueChanged);
    }

    void Update()
    {
        // 如果正在拖动滑动条,则不更新时间
        if (!isDragging)
        {
            slider.value = (float)videoPlayer.time / (float)videoPlayer.length;
        }
    }

    // 当滑动条的值发生改变时执行
    void OnSliderValueChanged(float value)
    {
        videoPlayer.time = videoPlayer.length * value;
    }

    // 开始拖动滑动条时执行
    public void OnSliderDragBegin()
    {
        isDragging = true;
        videoPlayer.Pause();
    }

    // 结束拖动滑动条时执行
    public void OnSliderDragEnd()
    {
        isDragging = false;
        videoPlayer.Play();
    }
}

13.将VideoPlayerControl拖入Raw Image,Video Player设置为Raw Image,Slider设置为Slider。

14.点击运行项目就可以播放视频了,在滑块中点击相应位置就可以更改视频进度了,将视频暂停后拖动进度条更方便,视频播放时拖动有可能会卡顿。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值