using DG.Tweening; using RenderHeads.Media.AVProVideo; using System; using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using UnityEngine.Video; public class AndroidPadMainPage : MonoBehaviour { [SerializeField] private TextMeshProUGUI m_DateText; [SerializeField] private TextMeshProUGUI m_TimeText; [SerializeField] private List m_Video1Toggle; [SerializeField] private Button m_LastScreenButton; [SerializeField] private Button m_NextScreenButton; private int screenIndex; [SerializeField] private List cireToggles = new List(); [SerializeField] private Button m_LastVideoButton0; [SerializeField] private Button m_NextVideoButton0; [SerializeField] private Button m_LastVideoButton1; [SerializeField] private Button m_NextVideoButton1; private int videoIndex; [SerializeField] private GameObject m_CireVideoToggleItem; private List cireVideoToggles = new List(); private Tween m_ScreenVideo; [SerializeField] private RectTransform m_ScreenContent; private Tween m_VideoTween; private RectTransform m_VideoContent; private GameObject m_NowScreenObj; [SerializeField] private List VideoScreens = new List(); [SerializeField] private Text m_VideoInfo; [SerializeField] private Button m_ResetButton; public MediaPlayer m_VideoPlayer; // Start is called before the first frame update IEnumerator Start() { yield return new WaitForSeconds(2); for (int i = 0; i < m_Video1Toggle.Count; i++) { int index = i; m_Video1Toggle[index].onValueChanged.AddListener((b)=> { if (b) { m_ScreenVideo.Kill(); screenIndex = index; cireToggles[index].isOn = true; m_NowScreenObj = VideoScreens[index]; m_ScreenVideo = m_ScreenContent.DOAnchorPosY(616 * index,0.5f); InitCireVideoItems(); } }); } m_LastScreenButton.onClick.AddListener(()=> { screenIndex--; if(screenIndex <= 0) { screenIndex = 0; } m_Video1Toggle[screenIndex].isOn = false; m_Video1Toggle[screenIndex].isOn = true; }); m_NextScreenButton.onClick.AddListener(() => { screenIndex++; if (screenIndex >= cireToggles.Count) { screenIndex = (cireToggles.Count - 1); } m_Video1Toggle[screenIndex].isOn = false; m_Video1Toggle[screenIndex].isOn = true; }); m_LastVideoButton0.onClick.AddListener(() => { videoIndex--; if (videoIndex <= 0) { videoIndex = 0; } SendMessageToScreen(0); cireVideoToggles[videoIndex].isOn = false; cireVideoToggles[videoIndex].isOn = true; }); m_NextVideoButton0.onClick.AddListener(() => { videoIndex++; if (videoIndex >= cireVideoToggles.Count) { videoIndex = (cireVideoToggles.Count - 1); } SendMessageToScreen(3); cireVideoToggles[videoIndex].isOn = false; cireVideoToggles[videoIndex].isOn = true; }); m_LastVideoButton1.onClick.AddListener(() => { videoIndex--; if (videoIndex <= 0) { videoIndex = 0; } SendMessageToScreen(0); cireVideoToggles[videoIndex].isOn = false; cireVideoToggles[videoIndex].isOn = true; }); m_NextVideoButton1.onClick.AddListener(() => { videoIndex++; if (videoIndex >= cireVideoToggles.Count) { videoIndex = (cireVideoToggles.Count - 1); } SendMessageToScreen(3); cireVideoToggles[videoIndex].isOn = false; cireVideoToggles[videoIndex].isOn = true; }); //m_VideoSlider.onValueChanged.AddListener((v) => //{ // m_VideoNowTime.text = "00:00"; // m_VideoAllTime.text = "00:00"; // //控制视频进度 //}); m_ResetButton.onClick.AddListener(OnResetVideo); m_Video1Toggle[0].isOn = false; m_Video1Toggle[0].isOn = true; screenIndex = 0; } private void InitCireVideoItems() { for (int i = (cireVideoToggles.Count - 1); i >= 0; i--) { Destroy(cireVideoToggles[i].gameObject); } cireVideoToggles.Clear(); foreach (Transform item in m_NowScreenObj.transform.GetChild(0).GetChild(0).GetChild(0)) { GameObject cireVideo = Instantiate(m_CireVideoToggleItem, m_CireVideoToggleItem.transform.parent); cireVideo.SetActive(true); cireVideoToggles.Add(cireVideo.GetComponent()); } //重置视频 m_VideoTween.Kill(); m_VideoContent = m_NowScreenObj.transform.GetChild(0).GetChild(0).GetChild(0).GetComponent(); for (int i = 0; i < cireVideoToggles.Count; i++) { int index = i; cireVideoToggles[index].onValueChanged.AddListener((b) => { m_VideoTween = m_VideoContent.DOAnchorPosX(-1086.806f * index, 0.5f); m_VideoInfo.text = "屏幕" + (screenIndex + 1) + ":视频" + (videoIndex + 1); InitVideoPlay(index); }); } m_VideoContent.anchoredPosition= Vector2.zero; videoIndex = 0; cireVideoToggles[0].isOn = false; cireVideoToggles[0].isOn = true; } /// /// 初始化视频模式 /// private void InitVideoPlay(int index) { if (m_VideoPlayer == null) return; m_VideoPlayer.OpenMedia(new MediaPath(m_NowScreenObj.transform.GetChild(0).GetChild(0).GetChild(0).GetChild(index).GetComponent()._mediaReference, MediaPathType.RelativeToStreamingAssetsFolder),false); m_VideoPlayer.Control.Seek(0); m_VideoPlayer.Control.Stop(); Debug.Log(m_NowScreenObj.transform.GetChild(0).GetChild(0).GetChild(0).GetChild(index).GetComponent()._mediaReference); } // Update is called once per frame void Update() { m_DateText.text = DateTime.Now.ToString("yyyy-MM-dd"); m_TimeText.text = DateTime.Now.ToString("HH:mm"); } /// /// 控制播放暂停 /// public void OnPlayStopVideo(int index) { if(index == 0) { m_VideoPlayer.Control.Play(); SendMessageToScreen(1); } else { m_VideoPlayer.Control.Stop(); SendMessageToScreen(2); } } /// /// 控制重播 /// private void OnResetVideo() { m_VideoPlayer.Control.Seek(0); SendMessageToScreen(4); } /// /// 发送消息给大屏端 /// 0:上一个 1:播放 2:暂停 3:下一个 4:重播 /// private void SendMessageToScreen(int operationCode) { string operationCodeStr = ""; if(operationCode == 0) { operationCodeStr = "上一个"; } else if(operationCode == 1) { operationCodeStr = "播放"; } else if (operationCode == 2) { operationCodeStr = "暂停"; } else if (operationCode == 3) { operationCodeStr = "下一个"; } else if (operationCode == 4) { operationCodeStr = "重播"; } Debug.Log("控制屏幕" + (screenIndex + 1) + "的第" + (videoIndex + 1) + "个视频进行" + operationCodeStr); } }