Unity - Jouer une vidéo

Gestion du temps

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é

Nous souhaitons maintenant afficher le temps de la vidéo dans notre interface. Pour cela, vous devez améliorer le script de contrôle de 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;

    private VideoPlayer videoPlayer;
    private int videoClipIndex;

    void Awake()
    {
        videoPlayer = GetComponent<VideoPlayer> ();
    }

    // Use this for initialization
    void Start () 
    {
        videoPlayer.clip = videoClips [0];  
    }
    
    // Update is called once per frame
    void Update () 
    {
        if (videoPlayer.isPlaying) 
        {
            SetCurrentTimeUI ();
            }
    }

    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;
    }
}

L'interface est définie dans l'espace monde. De plus, le texte des minutes et celui des secondes sont séparés afin de diminuer le nombre d'opérations sur les chaînes de caractères.

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 et 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.