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.