Petition-to-the-Gods-V3/Assets/Scripts/Client/ClientWorkMessageResultExitSceneController.cs
2025-11-18 14:54:11 +08:00

90 lines
2.4 KiB
C#

using System;
using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
using UnityEngine.Video;
public class ClientWorkMessageResultExitSceneController : MonoBehaviour
{
public static ClientWorkMessageResultExitSceneController Instance;
public GameObject step1Panel;
public Button step1SubmitButton;
public GameObject step2Panel;
public VideoPlayer step2VideoPlayer;
public RawImage step2RawImage;
private void Awake()
{
Instance = this;
}
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
if (step1SubmitButton)
{
step1SubmitButton.onClick.AddListener(step1SubmitButton_onClicked);
}
if (step2VideoPlayer != null)
{
// 設置影片結束事件
step2VideoPlayer.loopPointReached += step2VideoPlayer_onVideoFinished;
// 設置影片顯示
if (step2RawImage != null)
{
step2VideoPlayer.targetTexture = null;
step2VideoPlayer.renderMode = VideoRenderMode.RenderTexture;
RenderTexture rt = new RenderTexture(1080, 1920, 24);
step2VideoPlayer.targetTexture = rt;
step2VideoPlayer.isLooping = false;
step2RawImage.texture = rt;
}
}
processStep(1);
}
private void step1SubmitButton_onClicked()
{
if (ClientMessageHandler.Instance)
{
ClientMessageHandler.Instance.SendMessageToServer("workProcess", "survey_ok");
}
processStep(2);
}
private void step2VideoPlayer_onVideoFinished(VideoPlayer source)
{
StartCoroutine(LoadNextScene());
}
public void processStep(int step)
{
if (step1Panel)
{
step1Panel.SetActive(step == 1 ? true : false);
}
if (step2Panel)
{
step2Panel.SetActive(step == 2 ? true : false);
if (step2VideoPlayer != null)
{
step2VideoPlayer.Play();
}
}
}
// Update is called once per frame
void Update()
{
}
public IEnumerator LoadNextScene()
{
yield return new WaitForSeconds(0f);
SceneManager.LoadScene("ClientHomeScene");
}
}