I. Introduction▲
Cette série explique comment jouer une vidéo dans une scène Unity.
Vous pouvez retrouver les autres épisodes de cette série dans le sommaire dédié.
II. Vidéo▲
Unity - Jouer une vidéo
III. Résumé▲
Dans cette vidéo, vous allez finaliser l'interface en implémentant une barre de progression. Pour cela, il est nécessaire d'ajouter un nouveau script, enfant de l'indicateur de progression :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayHeadMover : MonoBehaviour
{
public Transform startPoint;
public Transform endPoint;
public void MovePlayhead(double playedFraction)
{
transform.position = Vector3.Lerp (startPoint.position, endPoint.position, (float)playedFraction);
}
}Celui-ci permet de déplacer le curseur entre le point de départ et de fin de la barre.
De plus, il est nécessaire de mettre à jour le script de contrôle de la vidéo pour connaître la position dans la vidéo :
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class WorldSpaceVideo : MonoBehaviour {
public Material playButtonMaterial;
public Material pauseButtonMaterial;
public Renderer playButtonRenderer;
public VideoClip[] videoClips;
public Text currentMinutes;
public Text currentSeconds;
public Text totalMinutes;
public Text totalSeconds;
public PlayHeadMover playHeadMover;
private VideoPlayer videoPlayer;
private int videoClipIndex;
void Awake()
{
videoPlayer = GetComponent<VideoPlayer> ();
}
// Use this for initialization
void Start ()
{
videoPlayer.targetTexture.Release ();
videoPlayer.clip = videoClips [0];
}
// Update is called once per frame
void Update ()
{
if (videoPlayer.isPlaying)
{
SetCurrentTimeUI ();
playHeadMover.MovePlayhead (CalculatePlayedFraction ());
}
}
public void SetNextClip()
{
videoClipIndex++;
if (videoClipIndex >= videoClips.Length)
{
videoClipIndex = videoClipIndex % videoClips.Length;
}
videoPlayer.clip = videoClips [videoClipIndex];
SetTotalTimeUI ();
videoPlayer.Play ();
}
public void PlayPause()
{
if (videoPlayer.isPlaying)
{
videoPlayer.Pause ();
playButtonRenderer.material = playButtonMaterial;
} else
{
videoPlayer.Play ();
SetTotalTimeUI ();
playButtonRenderer.material = pauseButtonMaterial;
}
}
void SetCurrentTimeUI()
{
string minutes = Mathf.Floor ((int)videoPlayer.time / 60).ToString ("00");
string seconds = ((int)videoPlayer.time % 60).ToString ("00");
currentMinutes.text = minutes;
currentSeconds.text = seconds;
}
void SetTotalTimeUI()
{
string minutes = Mathf.Floor ((int)videoPlayer.clip.length / 60).ToString ("00");
string seconds = ((int)videoPlayer.clip.length % 60).ToString ("00");
totalMinutes.text = minutes;
totalSeconds.text = seconds;
}
double CalculatePlayedFraction()
{
double fraction = (double)videoPlayer.frame / (double)videoPlayer.clip.frameCount;
return fraction;
}
}Finalement, dans la fonction Start(), nous nettoyons le contenu de la texture de rendu afin d'avoir une image noire au lancement de la scène.
IV. Ressources▲
Vous pouvez télécharger les ressources pour ce projet ici.
V. Commenter▲
Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum.




