Thank you for replying. I have checked in the playback methods but I can't find anything wrong.
I have the videos loading in separate quads with their own videoplayers. My code is as below -
using System;
using System.Collections;
using System.Collections.Generic;
using Lean.Touch;
using UnityEngine;
using UnityEngine.Video;
using UnityEngine.UI;
public class QuadPress1 : MonoBehaviour
{
public GameObject quadObject;
public FadeInOut1 script;
public VideoClip[] vids = new VideoClip[8];
public AudioClip[] audioClipArray;
private Collider quadCollider;
private UnityEngine.Video.VideoPlayer quadPlayer;
private AudioSource quadAudio;
public System.DateTime startTime;
public double timeInt;
private bool vidPlaying;
private bool enter = false;
private bool playFlag;
public int delay;
private bool playStop;
private int count;
string fQuad = "";
public System.DateTime ts;
private double timespan;
//public startPlaying myParent;
void Start()
{
delay = 10;
playStop = false;
playFlag = false;
quadPlayer = quadObject.GetComponent<UnityEngine.Video.VideoPlayer>();
quadAudio = quadObject.GetComponent<AudioSource>();
quadCollider = quadObject.GetComponent<MeshCollider>();
//myParent = transform.parent.GetComponent<parentscriptclass>();
vidPlaying = false;
quadPlayer.clip = vids[count];
quadAudio.clip = audioClipArray[count];
}
void Update()
{
var fingers = LeanTouch.Fingers;
if (delay > 0)
{
delay--;
}
else
{
if (fingers.Count == 1)
{
Ray ray = Camera.main.ScreenPointToRay(fingers[0].ScreenPosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if (hit.collider == quadCollider)
{
playStop = true;
delay = 1;
}
}
}
if (playStop && !quadPlayer.isPlaying)
{
if(quadPlayer.GetComponentInParent<Toggle>().isOn){
quadPlayer.Play();
quadAudio.Play();
playStop = false;
delay = 10;
vidPlaying = true;
this.transform.parent.GetComponent<startPlaying1>().startTime = System.DateTime.Now;
quadPlayer.GetComponentInParent<Toggle>().isOn = false;
}
else{
ts = System.DateTime.Now;
timespan = (ts - this.transform.parent.GetComponent<startPlaying1>().startTime).TotalSeconds;
if(playFlag == false)
StartCoroutine(waitToPlay());//plays the videos with a time gap
}
}
else if (playStop && !script.fadeOut)
{
if(enter == false)
StartCoroutine(your_timer()); //waits for sometime before the video fadesout
}
if (!quadPlayer.isPlaying && vidPlaying)
{
if(enter == false)
StartCoroutine(your_timer2()); //waits for sometime before the video fadesout
}
}
}
}
You looked at the unity docs for VideoPlayer? prepareCompleted is probably what you want.