121 lines
3.2 KiB
C#
121 lines
3.2 KiB
C#
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.Video;
|
|
|
|
public class ServerWorkMessageReplyExitPanel : MonoBehaviour
|
|
{
|
|
public static ServerWorkMessageReplyExitPanel Instance;
|
|
|
|
[Header("影片播放")]
|
|
public VideoPlayer videoPlayer;
|
|
public RawImage videoDisplay;
|
|
|
|
private bool clientResponseReceived = false; // ✅ 新增
|
|
private bool videoHasFinished = false; // ✅ 新增
|
|
|
|
private void Awake()
|
|
{
|
|
Instance = this;
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
SetupVideoPlayer();
|
|
}
|
|
|
|
public void play()
|
|
{
|
|
if (videoPlayer != null)
|
|
{
|
|
Debug.Log("SERVER: 開始播放影片");
|
|
clientResponseReceived = false; // ✅ 重置狀態
|
|
videoHasFinished = false; // ✅ 重置狀態
|
|
videoPlayer.Play();
|
|
}
|
|
}
|
|
|
|
public void stop()
|
|
{
|
|
if (videoPlayer != null)
|
|
{
|
|
Debug.Log("SERVER: 停止播放影片");
|
|
videoPlayer.Stop();
|
|
}
|
|
}
|
|
|
|
// ✅ 新增:當收到 CLIENT 訊號時呼叫此方法
|
|
public void OnClientResponseReceived()
|
|
{
|
|
Debug.Log("SERVER: 收到 CLIENT 訊號");
|
|
clientResponseReceived = true;
|
|
|
|
// 如果影片已經播完,立即跳轉
|
|
if (videoHasFinished)
|
|
{
|
|
Debug.Log("SERVER: 影片已播完,立即跳轉");
|
|
ProcessNextStep();
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("SERVER: 影片還在播放,等待播放完成...");
|
|
}
|
|
}
|
|
|
|
void SetupVideoPlayer()
|
|
{
|
|
if (videoPlayer != null)
|
|
{
|
|
videoPlayer.loopPointReached += OnVideoFinished; // ✅ 這行現在不會報錯了
|
|
videoPlayer.isLooping = false;
|
|
|
|
if (videoDisplay != null)
|
|
{
|
|
videoPlayer.targetTexture = null;
|
|
videoPlayer.renderMode = VideoRenderMode.RenderTexture;
|
|
RenderTexture rt = new RenderTexture(1920, 1080, 24);
|
|
videoPlayer.targetTexture = rt;
|
|
videoDisplay.texture = rt;
|
|
}
|
|
|
|
Debug.Log("SERVER: VideoPlayer 設置完成");
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("SERVER: VideoPlayer 未指定!");
|
|
}
|
|
}
|
|
|
|
// ✅ 新增:影片播放完成的事件處理
|
|
void OnVideoFinished(VideoPlayer vp)
|
|
{
|
|
Debug.Log("SERVER: 影片播放完成");
|
|
videoHasFinished = true;
|
|
|
|
// 只有當收到 CLIENT 訊號後才跳轉
|
|
if (clientResponseReceived)
|
|
{
|
|
Debug.Log("SERVER: CLIENT 訊號已收到,準備跳轉");
|
|
ProcessNextStep();
|
|
}
|
|
else
|
|
{
|
|
Debug.Log("SERVER: 影片播完,等待 CLIENT 訊號...");
|
|
}
|
|
}
|
|
|
|
// ✅ 新增:執行跳轉
|
|
void ProcessNextStep()
|
|
{
|
|
if (ServerWorkSceneController.Instance != null)
|
|
{
|
|
Debug.Log("SERVER: 跳轉到步驟 10");
|
|
ServerWorkSceneController.Instance.processStep(10);
|
|
}
|
|
else
|
|
{
|
|
Debug.LogError("SERVER: ServerWorkSceneController.Instance 不存在!無法跳轉");
|
|
}
|
|
}
|
|
} |