using UnityEngine; using System.Collections; using Snxxz.UI; using UnityEngine.Video; using System; public class MoviePlayer : MonoBehaviour { static MoviePlayer m_Instance; public static MoviePlayer Instance { get { if (m_Instance == null) { var prefab = VideoLoader.LoadPlayer(); var go = Instantiate(prefab); go.name = "MoviePlayer"; go.transform.position = new Vector3(1000, 4000, 1000); m_Instance = go.GetComponent(); m_Instance.m_VideoCamera.enabled = false; } return m_Instance; } } [SerializeField] VideoPlayer m_VideoPlayer; [SerializeField] AudioSource m_AudioSource; [SerializeField] Camera m_VideoCamera; public bool isPlaying { get; private set; } Action onComplete; public void Play(string name, Action onComplete) { var clip = VideoLoader.Load(name); if (clip == null) { return; } this.onComplete = onComplete; m_VideoPlayer.clip = clip; m_VideoPlayer.SetTargetAudioSource(0, m_AudioSource); m_VideoPlayer.Play(); m_VideoCamera.enabled = true; SoundPlayer.Instance.mute = true; isPlaying = true; } public void Stop() { isPlaying = false; m_VideoCamera.enabled = false; SoundPlayer.Instance.mute = false; if (m_VideoPlayer.isPlaying) { m_VideoPlayer.Stop(); m_VideoPlayer.clip = null; } if (onComplete != null) { onComplete(); onComplete = null; } } void Update() { if (isPlaying && !m_VideoPlayer.isPlaying) { Stop(); } } }