Merge pull request 'main' (#1) from chiyu.lin/Petition-to-the-Gods-V3:main into main

Reviewed-on: #1
This commit is contained in:
Eric Li 2025-11-18 13:56:12 +00:00
commit dda0816e13
49 changed files with 462 additions and 235 deletions

1
.gitignore vendored
View File

@ -98,3 +98,4 @@ InitTestScene*.unity*
# Auto-generated scenes by play mode tests
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
.idea/

View File

@ -680,6 +680,7 @@ RectTransform:
- {fileID: 669591507}
- {fileID: 1799202180}
- {fileID: 1586239280}
- {fileID: 210382441}
m_Father: {fileID: 85247803}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
@ -1674,11 +1675,13 @@ MonoBehaviour:
wordsLeftButton: {fileID: 1799202181}
wordsRightButton: {fileID: 1586239281}
wordsInputField: {fileID: 197304220}
wordsMessageTypeText: {fileID: 392621887}
wordsMessageTypeText: {fileID: 505411232}
wordsMessageText: {fileID: 865729178}
wordsPresentText: {fileID: 700040132}
waittingVideoPlayer: {fileID: 1389573209}
waittingRawImage: {fileID: 1100893614}
countdownText: {fileID: 210382442}
wordsCountdownTime: 60
--- !u!1 &91459950
GameObject:
m_ObjectHideFlags: 0
@ -3700,9 +3703,9 @@ RectTransform:
m_Father: {fileID: 856404095}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_SizeDelta: {x: -17, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &209353858
MonoBehaviour:
@ -3755,6 +3758,142 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 209353856}
m_CullTransparentMesh: 1
--- !u!1 &210382440
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 210382441}
- component: {fileID: 210382443}
- component: {fileID: 210382442}
m_Layer: 5
m_Name: Status
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &210382441
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 210382440}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 41462179}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 480}
m_SizeDelta: {x: 200, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &210382442
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 210382440}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier: Unity.TextMeshPro::TMPro.TextMeshProUGUI
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: XXXXX
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: 2cfe2255ddbc8dc44b75239d2f654cd0, type: 2}
m_sharedMaterial: {fileID: -2170148179293471370, guid: 2cfe2255ddbc8dc44b75239d2f654cd0, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4282532418
m_fontColor: {r: 0.25882354, g: 0.25882354, b: 0.25882354, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 36
m_fontSizeBase: 36
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 1
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_TextWrappingMode: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 0
m_ActiveFontFeatures: 6e72656b
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_EmojiFallbackSupport: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: -115.43753, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &210382443
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 210382440}
m_CullTransparentMesh: 1
--- !u!1 &223687182
GameObject:
m_ObjectHideFlags: 0
@ -7253,10 +7392,10 @@ RectTransform:
m_Children: []
m_Father: {fileID: 631945161}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 458.341, y: -150}
m_SizeDelta: {x: 916.682, y: 300}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &542996589
MonoBehaviour:
@ -9291,7 +9430,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &732267258
RectTransform:
m_ObjectHideFlags: 0
@ -24020,8 +24159,8 @@ RectTransform:
m_Children: []
m_Father: {fileID: 1980493388}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchorMin: {x: 0, y: 0.20513666}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}

View File

@ -20,11 +20,11 @@ public class ClientFinalSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -32,10 +32,10 @@ public class ClientFinalSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -49,7 +49,7 @@ public class ClientFinalSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
StartCoroutine(LoadNextScene());
}

View File

@ -20,11 +20,11 @@ public class ClientGameBackToRealSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -32,10 +32,10 @@ public class ClientGameBackToRealSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -49,7 +49,7 @@ public class ClientGameBackToRealSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
if (!string.IsNullOrEmpty(ClientLastWordsSceneController.words))
{
StartCoroutine(LoadNextScene());

View File

@ -23,7 +23,7 @@ public class ClientGameTalkingSceneController : MonoBehaviour
public Button finishGoToNextButton;
public Button finishBackToMenuButton;
private int playCountdownSecVal = 120;
private int playCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME;
private void Awake()
{
@ -57,7 +57,7 @@ public class ClientGameTalkingSceneController : MonoBehaviour
ClientMessageHandler.Instance.SendMessageToServer("gameTalkingPeopleSay", playMessageInputField.text);
}
playChatText.text = "<align=\"right\"><color=#63584A>-信眾-<br>" + playMessageInputField.text + "</color></align><br>" + playChatText.text;
playChatText.text = "<align=\"right\"><color=#63584A>-信眾-<br>" + playMessageInputField.text + "</color></align><br>" + playChatText.text;
playMessageInputField.text = "";
}
}
@ -65,7 +65,7 @@ public class ClientGameTalkingSceneController : MonoBehaviour
public void onReceivedChatMessage(string message)
{
playChatText.text = "-神明-<br>" + message + "<br>" + playChatText.text;
playChatText.text = "-神明-<br>" + message + "<br>" + playChatText.text;
}
IEnumerator StatusCountdown()
@ -74,7 +74,7 @@ public class ClientGameTalkingSceneController : MonoBehaviour
playCountdownSecVal--;
playCountdownText.text = "時間倒數 " + playCountdownSecVal.ToString() + "秒";
playCountdownText.text = "時間倒數 " + playCountdownSecVal.ToString() + "秒";
if (playCountdownSecVal > 0)
{
@ -116,7 +116,7 @@ public class ClientGameTalkingSceneController : MonoBehaviour
if (step == 1)
{
playCount++;
playCountdownSecVal = 120;
playCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME;
}
}

View File

@ -35,7 +35,7 @@ public class ClientGameTypingSceneController : MonoBehaviour
playCountdownSecVal--;
playCountdownText.text = "時間倒數 " + playCountdownSecVal.ToString() + "秒";
playCountdownText.text = "時間倒數 " + playCountdownSecVal.ToString() + "秒";
if (playCountdownSecVal > 0)
{

View File

@ -7,7 +7,7 @@ public class ClientGlobalMenuManager : MonoBehaviour
{
public static ClientGlobalMenuManager Instance;
[Header("UI 元件")]
[Header("UI 元件")]
public GameObject menuButton;
public GameObject menuPanel;
public Button homeButton;
@ -20,7 +20,7 @@ public class ClientGlobalMenuManager : MonoBehaviour
if (Instance == null)
{
Instance = this;
// 將整個 Canvas 設為 DontDestroyOnLoad
// 將整個 Canvas 設為 DontDestroyOnLoad
if (transform.parent != null)
{
DontDestroyOnLoad(transform.root.gameObject);
@ -44,11 +44,11 @@ public class ClientGlobalMenuManager : MonoBehaviour
void InitializeMenu()
{
// 確保選單面板一開始是隱藏的
// 確保選單面板一開始是隱藏的
if (menuPanel != null)
menuPanel.SetActive(false);
// 綁定按鈕事件
// 綁定按鈕事件
if (menuButton != null)
{
Button btn = menuButton.GetComponent<Button>();
@ -83,7 +83,7 @@ public class ClientGlobalMenuManager : MonoBehaviour
skipButton.onClick.AddListener(SkipButton);
}
Debug.Log("Client GlobalMenuManager 初始化完成");
Debug.Log("Client GlobalMenuManager 初始化完成");
}
@ -92,7 +92,7 @@ public class ClientGlobalMenuManager : MonoBehaviour
if (menuPanel != null)
{
menuPanel.SetActive(true);
Debug.Log("選單已打開");
Debug.Log("選單已打開");
}
}
@ -101,20 +101,20 @@ public class ClientGlobalMenuManager : MonoBehaviour
if (menuPanel != null)
{
menuPanel.SetActive(false);
Debug.Log("選單已關閉");
Debug.Log("選單已關閉");
}
}
void GoToHome()
{
Debug.Log("返回主頁");
Debug.Log("返回主頁");
SceneManager.LoadScene("ClientHomeScene");
CloseMenu();
}
void QuitApplication()
{
Debug.Log("離開程式");
Debug.Log("離開程式");
#if UNITY_EDITOR
UnityEditor.EditorApplication.isPlaying = false;
#else

View File

@ -10,7 +10,7 @@ public class ClientHomeSceneController : MonoBehaviour
{
public static ClientHomeSceneController Instance;
[Header("UI じン")]
[Header("UI 元件")]
public Button startButton;
void Awake()

View File

@ -9,7 +9,7 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
{
public static ClientHomeWaittingSceneController Instance;
[Header("UI 元件")]
[Header("UI 元件")]
public TMP_Text statusText;
private bool isConnecting = false;
@ -35,7 +35,7 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
if (statusText != null)
{
statusText.text = "等待神明的降臨";
statusText.text = "等待神明的降臨";
}
}
@ -46,28 +46,28 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
if (statusText != null)
{
statusText.text = "等待神明的降臨.";
statusText.text = "等待神明的降臨.";
}
// 設置 NetworkManager
// 設置 NetworkManager
if (ClientNetworkManager.Instance != null)
{
//ClientNetworkManager.Instance.StopClient();
ClientNetworkManager.Instance.networkAddress = ClientInitSceneController.ServerAddr;
// 使用 Telepathy (TCP) Transport
// 使用 Telepathy (TCP) Transport
TelepathyTransport transport = ClientNetworkManager.Instance.GetComponent<TelepathyTransport>();
if (transport != null)
{
transport.port = ClientInitSceneController.ServerPort;
}
// 開始連線
// 開始連線
ClientNetworkManager.Instance.StartClient();
Debug.Log($"開始連線到 {ClientInitSceneController.ServerAddr}:{ClientInitSceneController.ServerPort}");
Debug.Log($"開始連線到 {ClientInitSceneController.ServerAddr}:{ClientInitSceneController.ServerPort}");
}
// 等待連線
// 等待連線
float timeout = 3f;
float elapsed = 0f;
@ -79,11 +79,11 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
if (NetworkClient.isConnected)
{
Debug.Log("連線成功!等待 Welcome 訊息...");
Debug.Log("連線成功!等待 Welcome 訊息...");
if (statusText != null)
{
statusText.text = "等待神明的降臨..";
statusText.text = "等待神明的降臨..";
}
// send welcome
@ -93,16 +93,16 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
ClientMessageHandler.Instance.SendMessageToServer("welcome", "hello");
}
// 等待 Welcome 訊息
// 等待 Welcome 訊息
yield return StartCoroutine(WaitForWelcomeMessage());
}
else
{
Debug.LogError("連線失敗!");
Debug.LogError("連線失敗!");
if (statusText != null)
{
statusText.text = "等待神明的降臨...!";
statusText.text = "等待神明的降臨...!";
}
isConnecting = false;
@ -124,11 +124,11 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
if (!welcomeReceived)
{
Debug.LogError("未收到 Welcome 訊息!");
Debug.LogError("未收到 Welcome 訊息!");
if (statusText != null)
{
statusText.text = "等待神明的降臨...!!";
statusText.text = "等待神明的降臨...!!";
}
isConnecting = false;
@ -139,11 +139,11 @@ public class ClientHomeWaittingSceneController : MonoBehaviour
public void OnWelcomeMessageReceived()
{
welcomeReceived = true;
Debug.Log("Welcome 訊息已驗證,準備跳轉場景");
Debug.Log("Welcome 訊息已驗證,準備跳轉場景");
if (statusText != null)
{
statusText.text = "等待神明的降臨...";
statusText.text = "等待神明的降臨...";
}
StartCoroutine(LoadIntroScene());

View File

@ -38,7 +38,7 @@ public class ClientInitSceneController : MonoBehaviour
void InitializeClient()
{
Debug.Log("ªì©l¤Æ Client...");
Debug.Log("初始化 Client...");
}

View File

@ -8,7 +8,7 @@ public class ClientIntroSceneController : MonoBehaviour
{
public static ClientIntroSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -21,11 +21,11 @@ public class ClientIntroSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放介紹影片");
Debug.Log("開始播放介紹影片");
}
}
@ -33,10 +33,10 @@ public class ClientIntroSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -50,7 +50,7 @@ public class ClientIntroSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉到 ClientWorkScene");
Debug.Log("影片播放完成,準備跳轉到 ClientWorkScene");
StartCoroutine(LoadNextScene());
}

View File

@ -31,7 +31,7 @@ public class ClientMessageHandler : MonoBehaviour
void OnServerMessageReceived(GameMessage msg)
{
Debug.Log($"收到 Server 訊息: {msg.action} {msg.payload}");
Debug.Log($"收到 Server 訊息: {msg.action} {msg.payload}");
try
{
@ -42,7 +42,7 @@ public class ClientMessageHandler : MonoBehaviour
switch(msg.payload)
{
case "hello":
Debug.Log("Welcome 訊息驗證成功");
Debug.Log("Welcome 訊息驗證成功");
// clean data
ClientWorkMessageHandleSceneController.cleanData();
@ -107,7 +107,7 @@ public class ClientMessageHandler : MonoBehaviour
}
catch (Exception e)
{
Debug.LogError($"解析 JSON 失敗: {e.Message}");
Debug.LogError($"解析 JSON 失敗: {e.Message}");
}
}
@ -117,11 +117,11 @@ public class ClientMessageHandler : MonoBehaviour
{
GameMessage msg = new GameMessage { action = action, payload = message };
NetworkClient.Send(msg);
Debug.Log($"發送訊息到 Server: {message}");
Debug.Log($"發送訊息到 Server: {message}");
}
else
{
Debug.LogError($"發送訊息到 Server 失敗: {message}");
Debug.LogError($"發送訊息到 Server 失敗: {message}");
}
}
}

View File

@ -21,7 +21,7 @@ public class ClientNetworkManager : NetworkManager
public override void OnClientConnect()
{
base.OnClientConnect();
Debug.Log("Client 已連接到 Server");
Debug.Log("Client 已連接到 Server");
if (ClientMessageHandler.Instance != null)
{
ClientMessageHandler.Instance.RegisterHandler();
@ -35,7 +35,7 @@ public class ClientNetworkManager : NetworkManager
ClientMessageHandler.Instance.UnregisterHandler();
}
base.OnClientDisconnect();
Debug.Log("Client 已斷開連接");
Debug.Log("Client 已斷開連接");
}
}

View File

@ -9,7 +9,7 @@ public class ClientWorkMessageFinishSceneController : MonoBehaviour
{
public static ClientWorkMessageFinishSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -22,11 +22,11 @@ public class ClientWorkMessageFinishSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -34,10 +34,10 @@ public class ClientWorkMessageFinishSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -51,7 +51,7 @@ public class ClientWorkMessageFinishSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
StartCoroutine(LoadNextScene());
}

View File

@ -12,7 +12,7 @@ public class ClientWorkMessageHandleSceneController : MonoBehaviour
public static string messageResult = "";
public static string messageResultText = "";
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -32,11 +32,11 @@ public class ClientWorkMessageHandleSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -44,10 +44,10 @@ public class ClientWorkMessageHandleSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -62,7 +62,7 @@ public class ClientWorkMessageHandleSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成,準備跳轉到 ClientWorkScene");
//Debug.Log("影片播放完成,準備跳轉到 ClientWorkScene");
//StartCoroutine(LoadNextScene());
}

View File

@ -28,10 +28,10 @@ public class ClientWorkMessageResultExitSceneController : MonoBehaviour
}
if (step2VideoPlayer != null)
{
// 砞竚紇<EFBFBD><EFBFBD>ㄆン
// 設置影片結束事件
step2VideoPlayer.loopPointReached += step2VideoPlayer_onVideoFinished;
// 砞竚紇<EFBFBD>陪ボ
// 設置影片顯示
if (step2RawImage != null)
{
step2VideoPlayer.targetTexture = null;

View File

@ -9,7 +9,7 @@ public class ClientWorkMessageResultNoSceneController : MonoBehaviour
{
public static ClientWorkMessageResultNoSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -22,11 +22,11 @@ public class ClientWorkMessageResultNoSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -34,10 +34,10 @@ public class ClientWorkMessageResultNoSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -51,7 +51,7 @@ public class ClientWorkMessageResultNoSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
StartCoroutine(LoadNextScene());
}

View File

@ -9,7 +9,7 @@ public class ClientWorkMessageResultNotSureSceneController : MonoBehaviour
{
public static ClientWorkMessageResultNotSureSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -22,11 +22,11 @@ public class ClientWorkMessageResultNotSureSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -34,10 +34,10 @@ public class ClientWorkMessageResultNotSureSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -51,7 +51,7 @@ public class ClientWorkMessageResultNotSureSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
StartCoroutine(LoadNextScene());
}

View File

@ -54,10 +54,10 @@ public class ClientWorkMessageResultView2SceneController : MonoBehaviour
if (step4VideoPlayer != null)
{
// 砞竚紇<EFBFBD><EFBFBD>ㄆン
// 設置影片結束事件
step4VideoPlayer.loopPointReached += step4VideoPlayer_onVideoFinished;
// 砞竚紇<EFBFBD>陪ボ
// 設置影片顯示
if (step4RawImage != null)
{
step4VideoPlayer.targetTexture = null;
@ -70,10 +70,10 @@ public class ClientWorkMessageResultView2SceneController : MonoBehaviour
}
if (step5VideoPlayer != null)
{
// 砞竚紇<EFBFBD><EFBFBD>ㄆン
// 設置影片結束事件
step5VideoPlayer.loopPointReached += step5VideoPlayer_onVideoFinished;
// 砞竚紇<EFBFBD>陪ボ
// 設置影片顯示
if (step5RawImage != null)
{
step5VideoPlayer.targetTexture = null;

View File

@ -9,7 +9,7 @@ public class ClientWorkMessageResultYesSceneController : MonoBehaviour
{
public static ClientWorkMessageResultYesSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -22,11 +22,11 @@ public class ClientWorkMessageResultYesSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
Debug.Log("開始播放影片");
Debug.Log("開始播放影片");
}
}
@ -34,10 +34,10 @@ public class ClientWorkMessageResultYesSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -51,7 +51,7 @@ public class ClientWorkMessageResultYesSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成,準備跳轉");
Debug.Log("影片播放完成,準備跳轉");
StartCoroutine(LoadNextScene());
}

View File

@ -14,7 +14,7 @@ public class ClientWorkSceneController : MonoBehaviour
{
public static ClientWorkSceneController Instance;
[Header("UI 元件")]
[Header("UI 元件")]
public TMP_InputField messageTextInputField;
public TMP_InputField messagePresentInputField;
public Button submitButton;
@ -64,7 +64,7 @@ public class ClientWorkSceneController : MonoBehaviour
messageTextInputField.onValueChanged.AddListener(textInputField_onValueChanged);
}
Debug.Log("ClientWorkScene 初始化完成");
Debug.Log("ClientWorkScene 初始化完成");
}
private void textInputField_onValueChanged(string arg0)

View File

@ -4,11 +4,11 @@ using UnityEngine.UI;
[RequireComponent(typeof(Toggle))]
public class ExclusiveToggleVisual : MonoBehaviour
{
[Header("選中時圖片")]
[Header("選中時圖片")]
[SerializeField] private Sprite onBackground;
[SerializeField] private Sprite onCheckmark;
[Header("未選中時圖片(留空 = 原始圖)")]
[Header("未選中時圖片(留空 = 原始圖)")]
[SerializeField] private Sprite offBackground;
[SerializeField] private Sprite offCheckmark;
@ -23,15 +23,15 @@ public class ExclusiveToggleVisual : MonoBehaviour
bgImage = toggle.targetGraphic as Image;
checkImage = toggle.graphic as Image;
// 儲存原始圖片(供 off 狀態使用)
// 儲存原始圖片(供 off 狀態使用)
if (bgImage) origBg = bgImage.sprite;
if (checkImage) origCheck = checkImage.sprite;
// 關閉 UI 焦點干擾
// 關閉 UI 焦點干擾
toggle.transition = Selectable.Transition.None;
toggle.navigation = new Navigation { mode = Navigation.Mode.None };
// 初始 + 監聽
// 初始 + 監聽
SyncVisual();
toggle.onValueChanged.AddListener(_ => SyncVisual());
}
@ -40,11 +40,11 @@ public class ExclusiveToggleVisual : MonoBehaviour
{
bool isOn = toggle.isOn;
// 背景圖
// 背景圖
if (bgImage && onBackground)
bgImage.sprite = isOn ? onBackground : (offBackground ?? origBg);
// Checkmark 圖(僅在選中時顯示)
// Checkmark 圖(僅在選中時顯示)
if (checkImage)
{
if (onCheckmark)
@ -53,6 +53,6 @@ public class ExclusiveToggleVisual : MonoBehaviour
}
}
// 外部可強制刷新(如動態換圖)
// 外部可強制刷新(如動態換圖)
public void Refresh() => SyncVisual();
}

View File

@ -20,7 +20,7 @@ public class PersistentNetworkManager : MonoBehaviour
private void Awake()
{
// 單例模式:確保只有一個 NetworkManager 存在
// 單例模式:確保只有一個 NetworkManager 存在
if (instance == null)
{
instance = this;
@ -29,22 +29,22 @@ public class PersistentNetworkManager : MonoBehaviour
networkManager = GetComponent<NetworkManager>();
if (networkManager != null)
{
// 確保 NetworkManager 也設置為不銷毀
// 確保 NetworkManager 也設置為不銷毀
networkManager.dontDestroyOnLoad = true;
}
Debug.Log("NetworkManager 已設置為跨場景保持");
Debug.Log("NetworkManager 已設置為跨場景保持");
}
else
{
// 如果已經存在實例,銷毀這個重複的
Debug.Log("NetworkManager 已存在,銷毀重複物件");
// 如果已經存在實例,銷毀這個重複的
Debug.Log("NetworkManager 已存在,銷毀重複物件");
Destroy(gameObject);
}
}
/// <summary>
/// 獲取 NetworkManager 實例
/// 獲取 NetworkManager 實例
/// </summary>
public static NetworkManager GetNetworkManager()
{
@ -56,7 +56,7 @@ public class PersistentNetworkManager : MonoBehaviour
}
/// <summary>
/// 檢查是否已連線
/// 檢查是否已連線
/// </summary>
public static bool IsConnected()
{
@ -64,7 +64,7 @@ public class PersistentNetworkManager : MonoBehaviour
}
/// <summary>
/// 檢查是否為 Server
/// 檢查是否為 Server
/// </summary>
public static bool IsServer()
{
@ -72,7 +72,7 @@ public class PersistentNetworkManager : MonoBehaviour
}
/// <summary>
/// 清理連線(當需要完全重置時使用)
/// 清理連線(當需要完全重置時使用)
/// </summary>
public static void CleanupConnections()
{

View File

@ -4,7 +4,7 @@ using Mirror;
public class SceneController : MonoBehaviour
{
[Header("場景名稱設置")]
[Header("場景名稱設置")]
public string initSceneName = "InitScene";
public string serverHomeSceneName = "ServerHomeScene";

View File

@ -2,6 +2,6 @@ using Mirror;
public class EmptyNetworkPlayer : NetworkBehaviour
{
// 這是一個空的 Player 腳本,僅用於滿足 NetworkManager 的要求
// 實際上不會被使用,因為我們的應用不需要生成 Player 物件
// 這是一個空的 Player 腳本,僅用於滿足 NetworkManager 的要求
// 實際上不會被使用,因為我們的應用不需要生成 Player 物件
}

View File

@ -7,7 +7,7 @@ public class GlobalMenuManager : MonoBehaviour
{
public static GlobalMenuManager Instance;
[Header("UI 元件")]
[Header("UI 元件")]
public GameObject menuButton;
public GameObject menuPanel;
public Button homeButton;
@ -20,7 +20,7 @@ public class GlobalMenuManager : MonoBehaviour
if (Instance == null)
{
Instance = this;
// 重要:將整個 Canvas 設為 DontDestroyOnLoad
// 重要:將整個 Canvas 設為 DontDestroyOnLoad
if (transform.parent != null)
{
DontDestroyOnLoad(transform.root.gameObject);
@ -44,11 +44,11 @@ public class GlobalMenuManager : MonoBehaviour
void InitializeMenu()
{
// 確保選單面板一開始是隱藏的
// 確保選單面板一開始是隱藏的
if (menuPanel != null)
menuPanel.SetActive(false);
// 綁定按鈕事件
// 綁定按鈕事件
if (menuButton != null)
{
menuButton.GetComponent<Button>().onClick.AddListener(OpenMenu);

View File

@ -23,26 +23,26 @@ public class NetworkGameManager : NetworkManager
public override void OnStartServer()
{
base.OnStartServer();
Debug.Log("Server 已啟動");
Debug.Log("Server 已啟動");
}
public override void OnServerConnect(NetworkConnectionToClient conn)
{
base.OnServerConnect(conn);
Debug.Log($"客戶端已連接: {conn.connectionId}");
Debug.Log($"客戶端已連接: {conn.connectionId}");
}
public override void OnServerDisconnect(NetworkConnectionToClient conn)
{
base.OnServerDisconnect(conn);
Debug.Log($"客戶端已斷開: {conn.connectionId}");
Debug.Log($"客戶端已斷開: {conn.connectionId}");
}
// 覆寫這個方法來避免自動生成 Player
// 覆寫這個方法來避免自動生成 Player
public override void OnServerAddPlayer(NetworkConnectionToClient conn)
{
// 不自動生成 Player只是記錄連接
Debug.Log($"客戶端請求加入,但 Server 模式不需要生成 Player: {conn.connectionId}");
// 不自動生成 Player只是記錄連接
Debug.Log($"客戶端請求加入,但 Server 模式不需要生成 Player: {conn.connectionId}");
}
}

View File

@ -28,7 +28,7 @@ public class NetworkMessageHandler : MonoBehaviour
void OnClientMessageReceived(NetworkConnectionToClient conn, GameMessage msg)
{
Debug.Log($"¦¬¨ì«È¤áºÝ°T®§: {msg.action} {msg.payload}");
Debug.Log($"收到客戶端訊息: {msg.action} {msg.payload}");
switch (msg.action)
{
@ -203,11 +203,11 @@ public class NetworkMessageHandler : MonoBehaviour
{
GameMessage msg = new GameMessage { action = action, payload = message };
CurrentConn.Send(msg);
Debug.Log($"µo°e¨ì«È¤áºÝ: {message}");
Debug.Log($"發送到客戶端: {message}");
}
else
{
Debug.Log($"µo°e¨ì«È¤áºÝ¥¢±Ñ: {message}");
Debug.Log($"發送到客戶端失敗: {message}");
}
}
}

View File

@ -26,14 +26,14 @@ public class ServerGameTalkingPanel : MonoBehaviour
public Button sample4Button;
public Button sample5Button;
private int gameTimeCountdownSecVal = 100;
private int gameTimeCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME;
private string[] sampleTexts = {
"汝行街上,見一老嫗跌倒,身旁五千金鈔隨風散。若只得一瞬之舉,汝先救人,抑或先拾錢?",
"汝見一孩以假幣買食,攤主未覺。若揭穿,孩餓;若不言,誤教。汝何選?",
"友人誤將重物砸壞汝物,卻以為無人知曉。汝心明白真相,是當面直言,還是靜默讓他安?",
"汝於雨夜撞傷野貓,車無損,人未見。汝會停車查看,抑或遠去以免麻煩?",
"汝在工廠,知上司指示排放廢水入河,若揭發,恐遭解雇;若隱瞞,公司利潤倍增。汝何解?"
"汝行街上,見一老嫗跌倒,身旁五千金鈔隨風散。若只得一瞬之舉,汝先救人,抑或先拾錢?",
"汝見一孩以假幣買食,攤主未覺。若揭穿,孩餓;若不言,誤教。汝何選?",
"友人誤將重物砸壞汝物,卻以為無人知曉。汝心明白真相,是當面直言,還是靜默讓他安?",
"汝於雨夜撞傷野貓,車無損,人未見。汝會停車查看,抑或遠去以免麻煩?",
"汝在工廠,知上司指示排放廢水入河,若揭發,恐遭解雇;若隱瞞,公司利潤倍增。汝何解?"
};
@ -116,10 +116,10 @@ public class ServerGameTalkingPanel : MonoBehaviour
{
if (introVideoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
introVideoPlayer.loopPointReached += OnIntroVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (introVideoPlayer != null)
{
introVideoPlayer.targetTexture = null;
@ -133,14 +133,14 @@ public class ServerGameTalkingPanel : MonoBehaviour
void OnIntroVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
//StartCoroutine(LoadNextScene());
processStep(2);
}
public void onReceivedChatMessage(string message)
{
playChatText.text = "-信眾-<br>" + message + "<br>" + playChatText.text;
playChatText.text = "-信眾-<br>" + message + "<br>" + playChatText.text;
}
private void playSendButton_onClick()
@ -151,7 +151,7 @@ public class ServerGameTalkingPanel : MonoBehaviour
{
NetworkMessageHandler.Instance.SendMessageToClient("gameTalkingGodSay", playInputField.text);
}
playChatText.text = "<align=\"right\"><color=#63584A>-神明-<br>" + playInputField.text + "</color></align><br>" + playChatText.text;
playChatText.text = "<align=\"right\"><color=#63584A>-神明-<br>" + playInputField.text + "</color></align><br>" + playChatText.text;
playInputField.text = "";
}
}
@ -160,7 +160,7 @@ public class ServerGameTalkingPanel : MonoBehaviour
{
yield return new WaitForSeconds(1f);
if (gameTimeCountdownSecVal == 100)
if (gameTimeCountdownSecVal == GlobalData.GAME_TALK_COUNTDOWN_TIME)
{
if (NetworkMessageHandler.Instance)
{
@ -169,7 +169,7 @@ public class ServerGameTalkingPanel : MonoBehaviour
}
gameTimeCountdownSecVal--;
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
if (gameTimeCountdownSecVal > 0)
{
StartCoroutine(GameTimeCountdown());
@ -191,7 +191,7 @@ public class ServerGameTalkingPanel : MonoBehaviour
introPanel.SetActive(step == 1);
if (step == 1)
{
gameTimeCountdownSecVal = 100;
gameTimeCountdownSecVal = GlobalData.GAME_TALK_COUNTDOWN_TIME;
}
}
if (playPanel)
@ -200,15 +200,11 @@ public class ServerGameTalkingPanel : MonoBehaviour
if (step == 2)
{
playChatText.text = "";
if (statusText.text == "--")
{
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
StartCoroutine(GameTimeCountdown());
}
}
}
}
// Update is called once per frame
void Update()

View File

@ -71,10 +71,10 @@ public class ServerGameTypingPanel : MonoBehaviour
{
if (introVideoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
introVideoPlayer.loopPointReached += OnIntroVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (introVideoPlayer != null)
{
introVideoPlayer.targetTexture = null;
@ -88,7 +88,7 @@ public class ServerGameTypingPanel : MonoBehaviour
void OnIntroVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
//StartCoroutine(LoadNextScene());
processStep(2);
}
@ -97,10 +97,10 @@ public class ServerGameTypingPanel : MonoBehaviour
{
if (introVideoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
playVideoPlayer.loopPointReached += OnPlayVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (playVideoPlayer != null)
{
playVideoPlayer.targetTexture = null;
@ -114,7 +114,7 @@ public class ServerGameTypingPanel : MonoBehaviour
void OnPlayVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
//StartCoroutine(LoadNextScene());
OnReceivedResult();
@ -136,7 +136,7 @@ public class ServerGameTypingPanel : MonoBehaviour
gameTimeCountdownSecVal--;
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
statusText.text = "倒計時 : <color=\"red\">" + gameTimeCountdownSecVal.ToString() + "</color>s";
if (gameTimeCountdownSecVal > 0)
{
StartCoroutine(GameTimeCountdown());

View File

@ -13,10 +13,10 @@ public class ServerGameWaittingPanel : MonoBehaviour
{
if (introVideoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
introVideoPlayer.loopPointReached += OnIntroVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (introVideoPlayer != null)
{
introVideoPlayer.isLooping = true;
@ -31,7 +31,7 @@ public class ServerGameWaittingPanel : MonoBehaviour
void OnIntroVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成");
//Debug.Log("影片播放完成");
//StartCoroutine(LoadNextScene());
}

View File

@ -9,7 +9,7 @@ public class ServerHomeSceneController : MonoBehaviour
{
public static ServerHomeSceneController Instance;
[Header("UI じン")]
[Header("UI 元件")]
public Button StartBtn;
void Awake()

View File

@ -8,7 +8,7 @@ public class ServerHomeWaittingSceneController : MonoBehaviour
{
public static ServerHomeWaittingSceneController Instance;
[Header("UI 元件")]
[Header("UI 元件")]
public TMP_Text waitingText;
private bool clientConnected = false;
@ -27,7 +27,7 @@ public class ServerHomeWaittingSceneController : MonoBehaviour
{
if (waitingText != null)
{
waitingText.text = "等待您的客戶加入…";
waitingText.text = "等待您的客戶加入…";
}
}
@ -36,7 +36,7 @@ public class ServerHomeWaittingSceneController : MonoBehaviour
if (!clientConnected)
{
clientConnected = true;
Debug.Log("客戶端已連接,準備跳轉場景");
Debug.Log("客戶端已連接,準備跳轉場景");
StartCoroutine(LoadIntroScene());

View File

@ -12,14 +12,14 @@ public class ServerInitSceneController : MonoBehaviour
void InitializeServer()
{
Debug.Log("初始化 Server...");
Debug.Log("初始化 Server...");
// 啟動 Server
// 啟動 Server
if (NetworkGameManager.Instance != null)
{
NetworkGameManager.Instance.StartServer();
// 等待一秒後自動連接本地 Client
// 等待一秒後自動連接本地 Client
StartCoroutine(AutoConnectLocalClient());
}
}
@ -31,10 +31,10 @@ public class ServerInitSceneController : MonoBehaviour
if (NetworkGameManager.Instance != null)
{
NetworkGameManager.Instance.StartClient();
Debug.Log("本地 Client 已連接到 Server");
Debug.Log("本地 Client 已連接到 Server");
}
// 初始化完成,跳到 ServerHomeScene
// 初始化完成,跳到 ServerHomeScene
yield return new WaitForSeconds(0.5f);
SceneManager.LoadScene("ServerHomeScene");
}

View File

@ -8,7 +8,7 @@ public class ServerIntroSceneController : MonoBehaviour
{
public static ServerIntroSceneController Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -20,7 +20,7 @@ public class ServerIntroSceneController : MonoBehaviour
{
SetupVideoPlayer();
// 開始播放影片
// 開始播放影片
if (videoPlayer != null)
{
videoPlayer.Play();
@ -31,10 +31,10 @@ public class ServerIntroSceneController : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -48,7 +48,7 @@ public class ServerIntroSceneController : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
StartCoroutine(LoadNextScene());
}

View File

@ -8,7 +8,7 @@ public class ServerWorkExitWorkPanel : MonoBehaviour
{
public static ServerWorkExitWorkPanel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -50,10 +50,10 @@ public class ServerWorkExitWorkPanel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -67,7 +67,7 @@ public class ServerWorkExitWorkPanel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
StartCoroutine(LoadHomeScene());
}

View File

@ -1,4 +1,5 @@
using System;
using System.Collections;
using TMPro;
using Unity.VisualScripting;
using UnityEngine;
@ -11,11 +12,11 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
private int currentSampleWordsIndex = 0;
private string[] sampleWords = {
"福在心間非遠方行誠一步百事昌天開一線容人渡前路微光漸放芒",
"命裡有時終必至急行反失遠行期靜看潮起潮又落好風自會送舟歸",
"心誠萬事皆能順莫急莫慌自有門天道酬勤終不負善念長存歸本根",
"汝問蒼天天不語早知汝路自難移命數原非神可改徒然叩首費心思",
"求財無財空添亂問愛無愛更心煩問命問天徒自苦不如回家補個眠"
"福在心間非遠方行誠一步百事昌天開一線容人渡前路微光漸放芒",
"命裡有時終必至急行反失遠行期靜看潮起潮又落好風自會送舟歸",
"心誠萬事皆能順莫急莫慌自有門天道酬勤終不負善念長存歸本根",
"汝問蒼天天不語早知汝路自難移命數原非神可改徒然叩首費心思",
"求財無財空添亂問愛無愛更心煩問命問天徒自苦不如回家補個眠"
};
public GameObject introPanel;
@ -37,6 +38,9 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
public VideoPlayer waittingVideoPlayer;
public RawImage waittingRawImage;
public TMP_Text countdownText;
public int wordsCountdownTime = GlobalData.WORD_COUNTDOWN_TIME;
private void Awake()
{
@ -70,10 +74,10 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
{
if (waittingVideoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
waittingVideoPlayer.loopPointReached += OnIntroVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (waittingVideoPlayer != null)
{
waittingVideoPlayer.isLooping = true;
@ -88,7 +92,7 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
void OnIntroVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成");
//Debug.Log("影片播放完成");
//StartCoroutine(LoadNextScene());
}
@ -157,16 +161,16 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
switch (ServerWorkMessagePanel.workMessageType)
{
case "TypeMoneyButton":
introMessageTypeText.text = "財運";
introMessageTypeText.text = "財運";
break;
case "TypeHealthButton":
introMessageTypeText.text = "健康";
introMessageTypeText.text = "健康";
break;
case "TypeLoveButton":
introMessageTypeText.text = "愛情";
introMessageTypeText.text = "愛情";
break;
default: // "TypeWorkButton"
introMessageTypeText.text = "工作";
introMessageTypeText.text = "工作";
break;
}
}
@ -178,6 +182,20 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
{
introPresentText.text = ServerWorkMessagePanel.workPresent;
}
//更新word系列文字
if (wordsMessageTypeText)
{
wordsMessageTypeText.text = introMessageTypeText?.text ?? "";
}
if (wordsMessageText)
{
wordsMessageText.text = introMessageText?.text ?? "";
}
if (wordsPresentText)
{
wordsPresentText.text = introPresentText?.text ?? "";
}
}
else
{
@ -189,6 +207,13 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
if (replyPanel)
{
replyPanel.SetActive(step == 2);
//倒數時間
if (step == 2)
{
wordsCountdownTime = GlobalData.WORD_COUNTDOWN_TIME;
UpdateWordsCountdownText();
StartCoroutine(WordCountdown());
}
}
if (waittingPanel)
{
@ -199,4 +224,25 @@ public class ServerWorkGameFinalPanel : MonoBehaviour
}
}
}
IEnumerator WordCountdown()
{
yield return new WaitForSeconds(1f);
wordsCountdownTime--;
UpdateWordsCountdownText();
if (wordsCountdownTime > 0)
{
StartCoroutine(WordCountdown());
}
else
{
wordsSubmitButton_onClicked();
}
}
private void UpdateWordsCountdownText()
{
countdownText.text = "倒計時 : <color=\"red\">" + wordsCountdownTime.ToString() + "</color>s";
}
}

View File

@ -6,7 +6,7 @@ public class ServerWorkIntroPanel : MonoBehaviour
{
public static ServerWorkIntroPanel Instance;
[Header("UI じン")]
[Header("UI 元件")]
public Button checkButton;
private void Awake()

View File

@ -11,7 +11,7 @@ public class ServerWorkMessagePanel : MonoBehaviour
public static string workPresent = "";
public static int workMessageCount = 0;
[Header("UI 元件")]
[Header("UI 元件")]
public GameObject messageLoadPanel;
public GameObject messageReceivedPanel;
public TMP_Text messageInfoText;
@ -59,13 +59,13 @@ public class ServerWorkMessagePanel : MonoBehaviour
}
if (messageInfoText)
{
messageInfoText.text = "系統提示:請稍後,連接客戶的願望中...";
messageInfoText.text = "系統提示:請稍後,連接客戶的願望中...";
}
return;
}
if ( messageInfoText)
{
messageInfoText.text = "系統提示:客戶已傳達願望給您,是否要幫助此客戶?請點擊回覆";
messageInfoText.text = "系統提示:客戶已傳達願望給您,是否要幫助此客戶?請點擊回覆";
}
if (messageLoadPanel)
{
@ -80,16 +80,16 @@ public class ServerWorkMessagePanel : MonoBehaviour
switch(workMessageType)
{
case "TypeMoneyButton":
typeText.text = "財運";
typeText.text = "財運";
break;
case "TypeHealthButton":
typeText.text = "健康";
typeText.text = "健康";
break;
case "TypeLoveButton":
typeText.text = "愛情";
typeText.text = "愛情";
break;
default: // "TypeWorkButton"
typeText.text = "工作";
typeText.text = "工作";
break;
}

View File

@ -6,7 +6,7 @@ public class ServerWorkMessageReplyContinuePanel : MonoBehaviour
{
public static ServerWorkMessageReplyContinuePanel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -34,10 +34,10 @@ public class ServerWorkMessageReplyContinuePanel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -52,7 +52,7 @@ public class ServerWorkMessageReplyContinuePanel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成");
//Debug.Log("影片播放完成");
if (ServerWorkSceneController.Instance)
{
ServerWorkSceneController.Instance.processStep(13);

View File

@ -8,7 +8,7 @@ public class ServerWorkMessageReplyExitPanel : MonoBehaviour
{
public static ServerWorkMessageReplyExitPanel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -42,10 +42,10 @@ public class ServerWorkMessageReplyExitPanel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -59,7 +59,7 @@ public class ServerWorkMessageReplyExitPanel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
ServerWorkSceneController.Instance.processStep(10);
}

View File

@ -8,7 +8,7 @@ public class ServerWorkMessageReplyWait1Panel : MonoBehaviour
{
public static ServerWorkMessageReplyWait1Panel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -42,10 +42,10 @@ public class ServerWorkMessageReplyWait1Panel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -59,7 +59,7 @@ public class ServerWorkMessageReplyWait1Panel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
ServerWorkSceneController.Instance.processStep(6);
}

View File

@ -6,7 +6,7 @@ public class ServerWorkMessageReplyWait1WorkingPanel : MonoBehaviour
{
public static ServerWorkMessageReplyWait1WorkingPanel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -40,10 +40,10 @@ public class ServerWorkMessageReplyWait1WorkingPanel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -58,7 +58,7 @@ public class ServerWorkMessageReplyWait1WorkingPanel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成");
//Debug.Log("影片播放完成");
}
}

View File

@ -8,7 +8,7 @@ public class ServerWorkMessageReplyWait2Panel : MonoBehaviour
{
public static ServerWorkMessageReplyWait2Panel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -41,10 +41,10 @@ public class ServerWorkMessageReplyWait2Panel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -58,7 +58,7 @@ public class ServerWorkMessageReplyWait2Panel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
Debug.Log("影片播放完成");
Debug.Log("影片播放完成");
ServerWorkSceneController.Instance.processStep(8);
}

View File

@ -6,7 +6,7 @@ public class ServerWorkMessageReplyWait2WorkingPanel : MonoBehaviour
{
public static ServerWorkMessageReplyWait2WorkingPanel Instance;
[Header("影片播放")]
[Header("影片播放")]
public VideoPlayer videoPlayer;
public RawImage videoDisplay;
@ -41,10 +41,10 @@ public class ServerWorkMessageReplyWait2WorkingPanel : MonoBehaviour
{
if (videoPlayer != null)
{
// 設置影片結束事件
// 設置影片結束事件
videoPlayer.loopPointReached += OnVideoFinished;
// 設置影片顯示
// 設置影片顯示
if (videoDisplay != null)
{
videoPlayer.targetTexture = null;
@ -59,7 +59,7 @@ public class ServerWorkMessageReplyWait2WorkingPanel : MonoBehaviour
void OnVideoFinished(VideoPlayer vp)
{
//Debug.Log("影片播放完成");
//Debug.Log("影片播放完成");
}
}

View File

@ -16,11 +16,11 @@ public class ServerWorkMessageReplyWordsPanel : MonoBehaviour
private int currentSampleWordsIndex = 0;
private string[] sampleWords = {
"福在心間非遠方行誠一步百事昌天開一線容人渡前路微光漸放芒",
"命裡有時終必至急行反失遠行期靜看潮起潮又落好風自會送舟歸",
"心誠萬事皆能順莫急莫慌自有門天道酬勤終不負善念長存歸本根",
"汝問蒼天天不語早知汝路自難移命數原非神可改徒然叩首費心思",
"求財無財空添亂問愛無愛更心煩問命問天徒自苦不如回家補個眠"
"福在心間非遠方行誠一步百事昌天開一線容人渡前路微光漸放芒",
"命裡有時終必至急行反失遠行期靜看潮起潮又落好風自會送舟歸",
"心誠萬事皆能順莫急莫慌自有門天道酬勤終不負善念長存歸本根",
"汝問蒼天天不語早知汝路自難移命數原非神可改徒然叩首費心思",
"求財無財空添亂問愛無愛更心煩問命問天徒自苦不如回家補個眠"
};
private void Awake()

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d0cf37a1ad53db44aac1eee1fffaf555
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,35 @@
using UnityEngine;
public class GlobalData
{
#region <>
/*
///<summary>
/// 伺服器 IP
///</summary>
public static string SERVER_IP
{
set { _SERVER_IP = value; }
get
{
return _SERVER_IP;
}
}
private static string _SERVER_IP = "127.0.0.1";
///<summary>
/// 伺服器 Port
///</summary>
public const ushort _SERVER_PORT = 17777;
*/
#endregion
/// <summary>
/// 小遊戲 - 對話的倒數時間
/// </summary>
public const int GAME_TALK_COUNTDOWN_TIME = 120;
/// <summary>
/// 詩籤的倒數時間
/// </summary>
public const int WORD_COUNTDOWN_TIME = 60;
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 14598982ddaf08a45802c011ef834d76