IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Unity - Jouer une vidéo

Progression de la lecture

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

 
Sélectionnez
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 :

 
Sélectionnez
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.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2017 Unity Technologies. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.