using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class The2ndScreenClientSceneController : MonoBehaviour { public static The2ndScreenClientSceneController Instance; public GameObject Panel_01; public GameObject Panel_02; public VideoPlayer Panel_02_vplayer; public RawImage Panel_02_vplayer_rawImage; public GameObject Panel_03; public VideoPlayer Panel_03_vplayer; public RawImage Panel_03_vplayer_rawImage; public GameObject Panel_04; public VideoPlayer Panel_04_vplayer; public RawImage Panel_04_vplayer_rawImage; public GameObject Panel_05; public VideoPlayer Panel_05_vplayer; public RawImage Panel_05_vplayer_rawImage; public GameObject Panel_06; public VideoPlayer Panel_06_vplayer; public RawImage Panel_06_vplayer_rawImage; private int currentStep = 0; private List StepQ = new List(); private bool isPlaying = false; private void Awake() { Instance = this; } // Start is called once before the first execution of Update after the MonoBehaviour is created void Start() { if (Panel_02_vplayer) { SetupVideoPlayer(Panel_02_vplayer, Panel_02_vplayer_rawImage, false, VideoPlayer_02_OnLoopPointReached); //Panel_02_vplayer.Play(); } if (Panel_03_vplayer) { SetupVideoPlayer(Panel_03_vplayer, Panel_03_vplayer_rawImage, false, VideoPlayer_03_OnLoopPointReached); //Panel_03_vplayer.Play(); } if (Panel_04_vplayer) { SetupVideoPlayer(Panel_04_vplayer, Panel_04_vplayer_rawImage, false, VideoPlayer_04_OnLoopPointReached); //Panel_04_vplayer.Play(); } if (Panel_05_vplayer) { SetupVideoPlayer(Panel_05_vplayer, Panel_05_vplayer_rawImage, false, VideoPlayer_05_OnLoopPointReached); //Panel_05_vplayer.Play(); } if (Panel_06_vplayer) { SetupVideoPlayer(Panel_06_vplayer, Panel_06_vplayer_rawImage, false, VideoPlayer_06_OnLoopPointReached); //Panel_06_vplayer.Play(); } } void SetupVideoPlayer(VideoPlayer videoPlayer, RawImage rawImage, bool isLooping, VideoPlayer.EventHandler OnLoopPointReached) { if (videoPlayer != null) { if (OnLoopPointReached != null) { videoPlayer.loopPointReached += OnLoopPointReached; } videoPlayer.isLooping = isLooping; if (rawImage != null) { videoPlayer.targetTexture = null; videoPlayer.renderMode = VideoRenderMode.RenderTexture; RenderTexture rt = new RenderTexture(1920, 1080, 24); videoPlayer.targetTexture = rt; rawImage.texture = rt; } } } private void VideoPlayer_02_OnLoopPointReached(VideoPlayer source) { isPlaying = false; if (StepQ.Count > 0) { processStep(StepQ[0]); StepQ.RemoveAt(0); } } private void VideoPlayer_03_OnLoopPointReached(VideoPlayer source) { isPlaying = false; if (StepQ.Count > 0) { processStep(StepQ[0]); StepQ.RemoveAt(0); } } private void VideoPlayer_04_OnLoopPointReached(VideoPlayer source) { isPlaying = false; if (StepQ.Count > 0) { processStep(StepQ[0]); StepQ.RemoveAt(0); } } private void VideoPlayer_05_OnLoopPointReached(VideoPlayer source) { isPlaying = false; if (StepQ.Count > 0) { processStep(StepQ[0]); StepQ.RemoveAt(0); } } private void VideoPlayer_06_OnLoopPointReached(VideoPlayer source) { isPlaying = false; if (StepQ.Count > 0) { processStep(StepQ[0]); StepQ.RemoveAt(0); } } public void processQueueStep(int step) { if (step == 0) { StepQ.Clear(); processStep(0); } else { if (isPlaying) { if (StepQ.Count > 0) { if (StepQ[StepQ.Count - 1] != step) { StepQ.Add(step); } } else { StepQ.Add(step); } } else { processStep(step); } } } public void processStep(int step) { isPlaying = false; if (Panel_01) { Panel_01.SetActive(step == 1); if (step == 1) { } else { } } if (Panel_02) { Panel_02.SetActive(step == 2); if (step == 2) { Panel_02_vplayer.Play(); isPlaying = true; } else { Panel_02_vplayer.Stop(); } } if (Panel_03) { Panel_03.SetActive(step == 3); if (step == 3) { Panel_03_vplayer.Play(); isPlaying = true; } else { Panel_03_vplayer.Stop(); } } if (Panel_04) { Panel_04.SetActive(step == 4); if (step == 4) { Panel_04_vplayer.Play(); isPlaying = true; } else { Panel_04_vplayer.Stop(); } } if (Panel_05) { Panel_05.SetActive(step == 5); if (step == 5) { Panel_05_vplayer.Play(); isPlaying = true; } else { Panel_05_vplayer.Stop(); } } if (Panel_06) { Panel_06.SetActive(step == 6); if (step == 6) { Panel_06_vplayer.Play(); isPlaying = true; } else { Panel_06_vplayer.Stop(); } } currentStep = step; } // Update is called once per frame void Update() { } }