iT邦幫忙

2026 iThome 鐵人賽

DAY 13
0
Software Development

Unity進階——做一個完整的遊戲系列 第 13

Day 13:整理場景出口與轉場前置標記

  • 分享至 

  • xImage
  •  

前一天我完成了村莊中的不可通行區域,讓玩家不能穿過房屋、木牆、小樹、石頭與告示牌等障礙物。到目前為止,玩家已經可以在 VillageScene 中移動,攝影機也會跟隨玩家,村莊場景也有了基本碰撞。

不過在繼續做 NPC 或任務之前,我先回頭整理整個遊戲的場景結構。因為本作的起點不是單純的村莊,而是森林遺跡,也就是 TutorialScene。這個教學遺跡同時也是早期地圖的分岔點,未來會連接村莊、森林與洞窟。

因此 Day 13 的目標不是馬上完成場景切換,而是先整理場景出口與轉場前置標記,讓後續要做場景切換、任務流程或探索區域時,不會因為場景關係混亂而重做。

首先,我回到 TutorialScene,檢查之前在 Day 4 建立的 TutorialMarkers。原本這裡已經有幾個 Marker,例如 VillageDirectionPoint、LeftExitPoint 和 RightExitPoint。不過這些名稱比較像暫時規劃點,還不夠清楚表達它們未來會通往哪個場景。

所以我將三個出口重新命名為更明確的轉場用途名稱。

https://ithelp.ithome.com.tw/upload/images/20260911/201783738XuDSdlHXV.png

重新命名後,TutorialScene 中的三個出口分別是:
Exit_ToVillage:通往主村莊 VillageScene
Exit_ToForest:之後通往森林或野外探索場景
Exit_ToCave:之後通往洞窟或地牢場景

這樣命名後,Hierarchy 中一看就能知道每個出口的用途,而不是只靠位置或記憶判斷。這對後續做轉場 Trigger 很重要,因為場景一多,如果名稱不清楚,很容易把出口接錯。

接著,我打開 VillageScene,開始整理村莊端的入口與出口。原本我一開始也考慮讓村莊直接通往森林或洞窟,但後來重新檢查遊戲結構後,決定不要這樣做。

目前的世界結構設定是:只有 TutorialScene 同時通往村莊、森林與洞窟;而 VillageScene 只和 TutorialScene 互通。這樣可以讓教學遺跡成為早期世界地圖的分岔點,主線流程也會比較清楚。

因此我在 VillageScene 中建立 VillageSceneMarkers,並先建立從教學遺跡進入村莊時的出生點。

https://ithelp.ithome.com.tw/upload/images/20260911/20178373l39meh2Mh4.png

Entry_FromTutorialRuins 代表玩家從 TutorialScene 進入村莊後,會出現在村莊中的哪個位置。我將它放在村莊北側入口附近,對應玩家從遺跡方向回到村莊的動線。

這個 Marker 目前還不會真的影響玩家出生位置,但它先把設計位置標出來。之後做 Scene Loading 時,就能用這個名稱當作目標出生點,而不是到時候再臨時找位置。

接著我也在 VillageScene 中建立回到教學遺跡的出口 Marker。

https://ithelp.ithome.com.tw/upload/images/20260911/20178373hqgDxMayVx.png

整理後,VillageSceneMarkers 中只保留:
Entry_FromTutorialRuins
Exit_ToTutorialRuins
也就是說,村莊目前只負責和教學遺跡互通,不直接前往森林或洞窟。森林與洞窟都會從 TutorialScene 分流出去。

這樣的結構比較符合目前劇情:主角從森林遺跡回村,回村後接觸村長與主線,再從遺跡分岔點前往森林或洞窟探索。村莊本身是據點,不是所有探索場景的直接入口。

為了避免這個設計只存在腦中,我也建立了一份場景流程紀錄檔:
Assets/Game/Docs/SceneFlow_Day13.md

https://ithelp.ithome.com.tw/upload/images/20260911/20178373jlrCsBrSg5.png

這份文件記錄目前的場景關係,包括:
TutorialScene 是三出口分岔點
TutorialScene 可以前往 VillageScene、未來的 ForestScene 和未來的 CaveScene
VillageScene 只回到 TutorialScene
ForestScene 和 CaveScene 目前還沒有正式建立

Day 13 暫時只做流程規劃,不做完整場景切換
建立這份文件的目的,是讓後續開發時有清楚依據。尤其是場景切換牽涉到目標場景、出生點、Trigger、SceneManager,如果沒有先把規則寫清楚,很容易做到一半才發現世界路線設計不合理。

最後,我也建立了一支轉場前置腳本:
Assets/Game/SceneFlow/Scripts/SceneTransitionPoint.cs
這支腳本目前還不負責真正切換場景,而是先作為轉場點的資料結構。

https://ithelp.ithome.com.tw/upload/images/20260911/20178373uFvHm2FiKj.png

SceneTransitionPoint 目前主要提供兩個欄位:
targetSceneName:代表這個轉場點之後要通往哪個場景
targetSpawnPointName:代表進入目標場景後,玩家要出現在哪個出生點

另外,腳本中也加入了 OnDrawGizmos(),讓轉場點可以在 Scene 視窗中顯示簡單的標記。這樣之後如果把這個腳本掛到某個出口物件上,就能比較直覺地看到場景轉場點的位置。

目前這支腳本不會自動切換場景,也不會偵測玩家碰撞。這是刻意保留的,因為 Day 13 的主題是「場景流程前置」,不是直接完成 SceneManager 轉場系統。真正的場景載入、Trigger 判定與玩家出生點移動,會留到後面再接上。

透過 Day 13 的整理,遊戲的世界結構變得更清楚。TutorialScene 不再只是新手教學區,而是同時作為早期探索地圖的分岔點;VillageScene 則是玩家回村、接任務與補給的主要據點。

這一天雖然沒有新增可玩的戰鬥或任務功能,但它整理了後續場景切換會需要的基礎。接下來就可以在這個結構上,逐步加入真正的轉場 Trigger、NPC 互動,或開始建立森林與洞窟場景。


上一篇
Day 12:建立村莊不可通行區域
下一篇
Day 14:建立第一條場景轉場路線
系列文
Unity進階——做一個完整的遊戲14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言