with unity trigger script event con and c# events unity3d unity5

c# - trigger - unity event system



Detecta cuando VideoPlayer ha terminado de jugar (1)

No confío ni uso los eventos de la API VideoPlayer porque también tuve problemas con ellos. Lo que ves es un error que no se ha solucionado durante meses.

Si desea detectar si el video ha terminado de reproducirse, use una corutina para verificar videoPlayer.isPlaying cada cuadro en un ciclo while. Cuando existe el ciclo while, significa que el video ha terminado de reproducirse.

while (videoPlayer.isPlaying) { yield return null; } //Done Playing

No puedo probar esto ahora mismo para verificar si la función de pausa afecta a videoPlayer.isPlaying pero puede probarlo usted mismo.

Otra forma de hacerlo es comprobar si frame es el mismo que frameCount . Cuando esto sea cierto, sabrá que el video ya terminó de reproducirse.

if(videoPlayer.frame == videoPlayer.frameCount) { //Video has finshed playing! }

Si ninguno de estos resolvió su problema, presente un informe de error.

Tengo una clase MovieController que administra videos en mi proyecto. Estoy usando el nuevo componente de reproductor de video introducido en Unity 5.6.

Me gustaría llamar a un método cuando una película ha terminado de reproducirse. Hasta ahora, este método es solo un Debug.Log , como puede ver:

using UnityEngine; using UnityEngine.Video; public class MovieController : MonoBehaviour { private VideoPlayer m_VideoPlayer; void Awake () { m_VideoPlayer = GetComponent<VideoPlayer>(); m_VideoPlayer.loopPointReached += OnMovieFinished; // loopPointReached is the event for the end of the video } void OnMovieFinished(VideoPlayer player) { Debug.Log("Event for movie end called"); player.Stop(); } }

Mi problema es que no se llama a OnMovieFinished al final del video, y acabo con una pantalla negra y nada en la consola.