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.






