【VideoPlayer】视频效果
声音没录制进去,全屏那块没全录进去;
在一个空对象上挂在如下组件;AudioSource挂上保持默认就好;
using System;
using System.Collections;
using System.Collections.Generic;
using UI;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.Video;
[RequireComponent(typeof(VideoPlayer))]
public class ToPlayVideo : MonoBehaviour
{
[Header("VideoPlayer组件")]
public VideoPlayer videoPlayer;
[Header("开始播放开关")]
public Toggle startToggle;
[Header("暂停播放开关")]
public Toggle pauseToggle;
[Header("全屏按钮")]
public Button fullScreenButton;
private bool isFullScreen; //判断视频是否全屏
private Vector3 initPos; //视频播放框初始坐标
private RectTransform rt ;
private void Awake()
{
//videoPlayer = GetComponent<VideoPlayer>();
rt = GetComponent<RectTransform>();
startToggle.onValueChanged.AddListener((isOn) =>
{
if (videoPlayer != null)
{
Play();
}
});
pauseToggle.onValueChanged.AddListener((isOn) =>
{
if (videoPlayer != null)
{
Pause();
}
});
fullScreenButton.onClick.AddListener(() =>
{
if (videoPlayer != null)
{
FullScreen();
}
});
}
private void Start()
{
initPos = transform.localPosition;
}
private void Update()
{
//退出全屏
if (isFullScreen && Input.GetKey(KeyCode.Escape))
{
transform.localPosition = initPos;
//视屏播放框框大小自定义
rt.sizeDelta = new Vector2(1670,1060);
isFullScreen = false;
}
}
/// <summary>
/// 暂停
/// </summary>
public void Pause()
{
videoPlayer.Pause();
}
/// <summary>
/// 停止
/// </summary>
public void Stop()
{
videoPlayer.Stop();
}
/// <summary>
/// 播放
/// </summary>
public void Play()
{
videoPlayer.Play();
}
/// <summary>
/// 全屏
/// </summary>
void FullScreen()
{
// rt.sizeDelta = new Vector2(Screen.width,Screen.height);
rt.sizeDelta = new Vector2(2052,1556); //视频播放全屏尺寸根据实际情况调整
rt.localPosition = new Vector3(4,1); //视频播放框框位置根据实际情况调整
isFullScreen = true;
}
/// <summary>
/// 获取视频时长
/// </summary>
/// <returns></returns>
public float GetTime()
{
return (videoPlayer.frameCount / videoPlayer.frameRate );
}
/// <summary>
/// 设置播放时间点
/// </summary>
/// <param name="time"></param>
public void SetTime(float time)
{
videoPlayer.frame = (long)(time * videoPlayer.frameRate);
Play();
}
}
创建一个Slider组件;通过Slider来控制视频播放位置;
using System;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace UI
{
//挂在Slider组件上
public class SliderEvent : MonoBehaviour,IEndDragHandler,IBeginDragHandler
{
[Header("视频播放脚本")]
public ToPlayVideo toPlayVideo;
private Slider _slider;
private float _videoTime; //视频时长
private bool isDrag;
private void Awake()
{
_slider = GetComponent<Slider>();
_videoTime = toPlayVideo.GetTime();
}
private void Start()
{
//将滚动条的最大值设置成为视频时长;(也可以保持百分比的方式)
_slider.maxValue = _videoTime;
}
// Update is called once per frame
void Update()
{
if (!isDrag && toPlayVideo.videoPlayer.isPlaying)
{
//滚动条跟着视频播放滑动;(保持百分比方式就不要 *_videoTime)
_slider.value = (float.Parse(toPlayVideo.videoPlayer.frame.ToString() )
/ float.Parse(toPlayVideo.videoPlayer.frameCount.ToString()))*_videoTime;
}
}
public void OnEndDrag(PointerEventData eventData)
{
isDrag = false;
toPlayVideo.SetTime(_slider.value);
}
public void OnBeginDrag(PointerEventData eventData)
{
isDrag = true;
toPlayVideo.Pause();
}
}
}