I’m setting VideoPlayer.frame to 0 to make a replay function. It works fine if the VideoPlayer is not looping, but if it is and the video has reached loop point once it no longer works. Below is the code I’m using. I’ve aslo attached some videos to explain the situation.
#region
using UnityEngine;
using UnityEngine.Video;
#endregion
public class VideoTester : MonoBehaviour
{
[SerializeField] private VideoPlayer _videoPlayer;
private bool _isSeeking;
private void Update()
{
if (Input.GetKeyDown(KeyCode.R))
{
print("Hit replay");
Replay();
}
}
private void Replay()
{
if (_isSeeking)
{
return;
}
print("Replay started");
_isSeeking = true;
_videoPlayer.Pause();
_videoPlayer.seekCompleted += VideoPlayerOnSeekCompleted;
_videoPlayer.frame = 0;
}
private void VideoPlayerOnSeekCompleted(VideoPlayer videoPlayer)
{
_videoPlayer.seekCompleted -= VideoPlayerOnSeekCompleted;
_isSeeking = false;
_videoPlayer.Play();
print("Seek Completed");
}
}
9814935–1410111–Video Player Looped.7z (3.9 MB)
9814935–1410114–Video Player Non Looped.7z (4.88 MB)