1. Crear interfaz
1. Cree una interfaz de unidad como se muestra
a continuación button1: video anterior
button2: play/pause
button3: next video
vidotime: es un texto que muestra la hora del video
videoname: nombre del video
2. La interfaz específica es la siguiente
2. Importar secuencias de comandos
1. Importar secuencias de comandos en RawImage para realizar reproducción/pausa de video y cambiar funciones de video
utilizando System.Collections;
usando System.Collections.Generic;
utilizando UnityEngine;
utilizando UnityEngine.UI;
utilizando UnityEngine.Video;
clase pública Video_Controller: MonoBehaviour
{ reproductor de video privado VideoPlayer; imagen sin procesar privada imagen sin procesar; privado int currentClipIndex;
Texto público text_playorpause;
botón público button_playorpause;
Botón público button_pre;
Botón público button_next;
Clip de vídeo público[] clips de vídeo;
void Start()
{ reproductor de video = this.GetComponent<VideoPlayer>(); rawImage = this.GetComponent<RawImage>(); índiceClipActual = 0; button_playorpause.onClick.AddListener(OnplayorpauseVideo); button_pre.onClick.AddListener(OnpreVideo); button_next.onClick.AddListener(OnnextVideo); }
// La actualización se llama una vez por cuadro
void Update()
{ if (videoplayer.texture == null) { return; } rawImage.textura = reproductor de video.textura;
}
private void OnplayorpauseVideo()
{ if (videoplayer.enabled == true) { if (videoplayer.isPlaying) { videoplayer.Pause(); text_playorpause.text = "播放"; } else if (!videoplayer.isPlaying) { videoplayer.Play(); text_playorpause.text = "暂停"; } } } privado void OnpreVideo() { currentClipIndex -= 1; si (ÍndiceClipActual < 0) {
currentClipIndex = videoClips.Length - 1;
}
videoplayer.clip = videoClips[currentClipIndex];
text_playorpause.text = "暂停";
}
privado void OnnextVideo()
{ currentClipIndex += 1; currentClipIndex = currentClipIndex % videoClips.Length; videoplayer.clip = videoClips[currentClipIndex]; text_playorpause.text = "暂停"; } }
2. Para diferentes funciones, seleccione el botón correspondiente
3. Agregue el componente del reproductor de video, seleccione el video para reproducir
4. Agregue secuencias de comandos para mostrar la barra de progreso del video y el tiempo de reproducción
utilizando UnityEngine;
utilizando UnityEngine.UI;
utilizando UnityEngine.Video;
clase pública ToPlayVideo: MonoBehaviour
{
public VideoClip videoClip; // parámetros del archivo de video
public Text videoTimeText; // texto de tiempo de video
public Text videoNameText; // nombre del video Text
public Slider videoTimeSlider; // control deslizante de tiempo de video
//Definir parámetros para obtener el componente VideoPlayer y el componente RawImage
reproductor de video reproductor de video interno;
imagen sin procesar privada imagen sin procesar;
// Usa esto para la inicialización
vacío Inicio ()
{
// Obtener el componente correspondiente en la escena
videoPlayer = this.GetComponent<VideoPlayer>();
rawImage = this.GetComponent<RawImage>();
videoPlayer.clip = videoclip;
videoNombreTexto.text = videoClip.nombre;
clipHour = (int)videoPlayer.clip.length / 3600;
clipMinute = (int)(videoPlayer.clip.length - clipHour * 3600) / 60;
clipSecond = (int)(videoPlayer.clip.length - clipHour * 3600 - clipMinute * 60);
videoPlayer.Play();
}
// La actualización se llama una vez por marco
actualización nula ()
{
//Si videoPlayer no tiene una textura de video correspondiente, regresa
si (videoPlayer.textura == nulo)
{
devolver;
}
//Renderiza el video de VideoPlayerd a RawImage de UGUI
rawImage.textura = videoPlayer.textura;
MostrarTiempoVideo();
}
/// <resumen>
/// Mostrar el tiempo del video actual
/// </resumen>
vacío privado ShowVideoTime()
{
// tiempo actual de reproducción del video
horaActual = (int)videoPlayer.time / 3600;
minuto actual = (int)(videoPlayer.time - hora actual * 3600) / 60;
currentSecond = (int)(videoPlayer.time - currentHour * 3600 - currentMinute * 60);
// Muestra el tiempo de reproducción del video actual en Text
videoTimeText.text = string.Format("{0:D2}:{1:D2}:{2:D2} / {3:D2}:{4:D2}:{5:D2}",
hora actual, minuto actual, segundo actual, clipHour, clipMinute, clipSecond);
// Asigne la relación de tiempo de la reproducción de video actual al Control deslizante
videoTimeSlider.value = (float)(videoPlayer.time / videoPlayer.clip.length);
}
/// <resumen>
/// El valor actual de la escala del control deslizante se convierte en el tiempo de reproducción de video actual
/// </resumen>
vacío privado SetVideoTimeValueChange()
{
videoPlayer.time = videoTimeSlider.value * videoPlayer.clip.length;
}
// El valor de tiempo total del video actual y los parámetros del valor de tiempo de reproducción actual
hora actual privada int;
minuto actual privado int;
privado int segundo actual;
clipHour int privado;
privado int clipMinute;
privado int clipSecond;
}
5. Agregue los controles correspondientes
6. Para realizar el arrastre y avance rápido de la reproducción de video por la barra de progreso, agregue la siguiente secuencia de comandos al control deslizante
utilizando UnityEngine;
utilizando UnityEngine.EventSystems;
/// <resumen>
/// Heredar la interfaz de arrastrar y soltar
/// </resumen>
SliderEvent de clase pública: MonoBehaviour, IDragHandler
{
[Serializar campo]
private ToPlayVideo toPlayVideo; // script para reproducción de video
// Usa esto para la inicialización
vacío Inicio ()
{
}
// La actualización se llama una vez por marco
actualización nula ()
{
}
/// <resumen>
/// Agregar evento de arrastre a Slider
/// </resumen>
/// <param nombre="eventData"></param>
public void OnDrag(PointerEventData eventData)
{
EstablecerCambioValorTiempoVideo();
}
/// <resumen>
/// El valor actual de la escala del control deslizante se convierte en el tiempo de reproducción de video actual
/// </resumen>
vacío privado SetVideoTimeValueChange()
{
toPlayVideo.videoPlayer.time = toPlayVideo.videoTimeSlider.value * toPlayVideo.videoPlayer.clip.length;
}
}
efecto final