Petition-to-the-Gods-V3/Assets/Scripts/Client/ClientWorkMessageResultExitSceneController.cs
2025-11-15 08:01:59 +08:00

90 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)
{
// ³]¸m¼v¤ùµ²§ô¨Æ¥ó
step2VideoPlayer.loopPointReached += step2VideoPlayer_onVideoFinished;
// ³]¸m¼v¤ùÅã¥Ü
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");
}
}