一、前言:
在昨天完成音量設定持久化後,今天【DAY 06】我們要把視角轉向遊戲的 場景流轉與過場銜接!在開發文字冒險或劇情導向的遊戲時,許多新手常問:「是不是一定要寫一套很複雜的動態載入系統?」其實不然!為了確保劇情節奏與幕數(Act/Scene)轉換的精確度,「人工手動精細銜接場景」 反而是最穩定、最不易產生 Bug 的經典作法。今天這篇就來複習與分享我們專案中是如何透過最直覺的方式管理與切換這些幕數場景!
二、劇情遊戲的場景架構思維
由於我是故事的原創者,所以在其他組員畫完美術繪圖後,確認沒有其他問題我便投入參與Unity的監工與製作,確保每一幕的內容與我所預期的相符。在我們這個專案中,故事是由多個幕數環環相扣而成的。從 Project 面板中可以看到,我們將每個劇情關鍵節點獨立切分為單獨的 Scene:
為什麼採用「單向/節點式」場景銜接?
三、核心場景切換器:SceneChanger.cs
為了讓主選單按鈕或是選單裡的其他功能能順利切換到目標幕數,我們寫了一個簡單直覺的 SceneChanger 腳本來負責調度:
using UnityEngine;
using UnityEngine.SceneManagement;
public class SceneChanger : MonoBehaviour {
// 可在 Inspector 設定場景名稱或直接在按鈕中指定
[Header("設定要切換的場景名稱")]
public string targetSceneName;
// 如果想要用 Inspector 設定好場景名稱
public void ChangeToTargetScene() {
if (!string.IsNullOrEmpty(targetSceneName)) {
SceneManager.LoadScene(targetSceneName);
Debug.Log($"Switched to target scene: {targetSceneName}");
}
else {
Debug.LogWarning("Target scene name is not set!");
}
}
// 開始遊戲(直接指定載入第一幕)
public void StartGame() {
SceneManager.LoadScene("Firstscene 1幕");
Debug.Log("Game Start!");
}
// 結束遊戲
public void QuitGame() {
Application.Quit();
Debug.Log("Game Quit!");
}
}
光寫好 C# 腳本還不夠,必須在 Unity 場景中建立實體物件來承載這個元件:

四、預先配置:Build Settings 與 UI 按鈕綁定
由於我們在開發前就已經全盤規劃好劇情,且每一幕的背景都已明確定案,因此在建置階段,我們就一次性將所有幕數的 Scene 通通預先拉入 Build Settings 清單中,確定好全劇情的流轉順序。
1. 預先將全幕數場景拉入 Build Settings
點選 Unity 頂部選單 File -> Build Settings,將 Scenes 資料夾裡所有已經定好的幕數場景(Firstscene 1幕、BlackScene 4幕、Consent form 等)一次性拖入 Scenes In Build 清單中。
圖二、幕數訂定示意圖
💡Tips: 主選單(SampleScene)必須固定放在最上面的 Index 0 作為遊戲入口,其餘幕數場景則依照劇情順序或指定名稱進行管理。
2. UI 按鈕 (Button) 事件綁定
以Hierarchy 中的 StartGame 按鈕為例:

五、 開發實戰踩雷經驗分享
場景名稱大小寫/中文字符拼錯: 在 SceneManager.LoadScene("Firstscene 1幕") 中,字串必須與 Project 裡的 Scene 檔名 100% 完全一致(包含空格與繁體中文)。若拼錯,Unity 主控台會報出 Scene '--' couldn't be loaded because it has not been added to the build settings 的錯誤。
Application.Quit() 在 Editor 沒反應: 執行 QuitGame() 時,在 Unity Editor 點擊測試是不會關閉 Editor 的(只會在 Console 印出 Game Quit!),必須等最後打包出成 .exe 執行檔後才會真正關閉遊戲視窗。
六、 今日成果與小結
最後別忘了傳到GitHub做紀錄:
1.檢查修改狀態
git status
2.加入暫存區並提交 Commit
git add .
git commit -m "feat: 新增 SceneChanger 場景切換腳本與 Build Settings 幕數配置"
3.推送到遠端開發分支
git push origin feature/story-flow