Files
ZHGD_Web/Assets/Scripts/UI/AndPad/AndroidPadMainPage.cs

273 lines
7.9 KiB
C#
Raw Normal View History

2025-07-13 23:16:20 +08:00
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<Toggle> m_Video1Toggle;
[SerializeField]
private Button m_LastScreenButton;
[SerializeField]
private Button m_NextScreenButton;
private int screenIndex;
[SerializeField]
private List<Toggle> cireToggles = new List<Toggle>();
[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<Toggle> cireVideoToggles = new List<Toggle>();
private Tween m_ScreenVideo;
[SerializeField]
private RectTransform m_ScreenContent;
private Tween m_VideoTween;
private RectTransform m_VideoContent;
private GameObject m_NowScreenObj;
[SerializeField]
private List<GameObject> VideoScreens = new List<GameObject>();
[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";
// //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>
//});
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<Toggle>());
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ
m_VideoTween.Kill();
m_VideoContent = m_NowScreenObj.transform.GetChild(0).GetChild(0).GetChild(0).GetComponent<RectTransform>();
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 = "<22><>Ļ" + (screenIndex + 1) + ":<3A><>Ƶ" + (videoIndex + 1);
InitVideoPlay(index);
});
}
m_VideoContent.anchoredPosition= Vector2.zero;
videoIndex = 0;
cireVideoToggles[0].isOn = false;
cireVideoToggles[0].isOn = true;
}
/// <summary>
/// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>Ƶģʽ
/// </summary>
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<VideoAvproPath>()._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<VideoAvproPath>()._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");
}
/// <summary>
/// <20><><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ͣ
/// </summary>
public void OnPlayStopVideo(int index)
{
if(index == 0)
{
m_VideoPlayer.Control.Play();
SendMessageToScreen(1);
}
else
{
m_VideoPlayer.Control.Stop();
SendMessageToScreen(2);
}
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD>
/// </summary>
private void OnResetVideo()
{
m_VideoPlayer.Control.Seek(0);
SendMessageToScreen(4);
}
/// <summary>
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/// 0:<3A><>һ<EFBFBD><D2BB> 1:<3A><><EFBFBD><EFBFBD> 2:<3A><>ͣ 3:<3A><>һ<EFBFBD><D2BB> 4:<3A>ز<EFBFBD>
/// </summary>
private void SendMessageToScreen(int operationCode)
{
string operationCodeStr = "";
if(operationCode == 0)
{
operationCodeStr = "<22><>һ<EFBFBD><D2BB>";
}
else if(operationCode == 1)
{
operationCodeStr = "<22><><EFBFBD><EFBFBD>";
}
else if (operationCode == 2)
{
operationCodeStr = "<22><>ͣ";
}
else if (operationCode == 3)
{
operationCodeStr = "<22><>һ<EFBFBD><D2BB>";
}
else if (operationCode == 4)
{
operationCodeStr = "<22>ز<EFBFBD>";
}
Debug.Log("<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ļ" + (screenIndex + 1) + "<22>ĵ<EFBFBD>" + (videoIndex + 1) + "<22><><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>" + operationCodeStr);
}
}