iT邦幫忙

2026 iThome 鐵人賽

DAY 28
0
Vibe Coding

從課堂半成品到完整發布:獨立遊戲的30天重生記系列 第 28 篇

【DAY28】Unity 2D 敘事遊戲開發:打包、發布與跨平台建置(Build Settings & WebGL / PC Deployment)

  • 分享至 

  • xImage
  •  

一、前言
在前幾天的文章中,我們陸續完成了遊戲的對話系統、成就管理、除錯機制與效能優化。當所有遊戲邏輯在 Unity 編輯器(Editor)中都能完美運行後,最令人興奮的環節莫過於將它打包成獨立執行檔(PC Standalone),或是發布到網頁平台上(WebGL)讓任何人只要點開連結就能直接遊玩。今天這篇文章,我們就要來實作 Unity 的專案打包與跨平台建置流程。

二、核心痛點剖析:編輯器正常,打包後卻崩潰?
在開發階段,許多資源與路徑在 Editor 裡運作得行雲流水,但一旦按下 Build,往往會遇到各種「打包後才現形」的靈異現象。

  • 慘況重現: 在編輯器測試時對話與圖片都讀得到,打包成 WebGL 或 PC 執行檔後,畫面卻一片黑或跳出 NullReferenceException,甚至 WebGL 跑到一半直接跳出記憶體溢出(Out of Memory)錯誤。
  • 傳統痛點: 忽略了平台差異(如 WebGL 的檔案非同步載入限制、檔案路徑讀寫權限、以及 Player Settings 的壓縮格式設定),導致發布出去的成品無法順利運行。

三、核心建置步驟:Build Settings 與 Player Settings 設定
要將專案順利打包,必須正確設定 Unity 的建置環境與目標平台參數:

1. 配置 Build Settings 場景順序:

1)點擊上方選單 File > Build Settings。

2)將專案中會用到的所有場景(如主畫面、遊戲主場景、結算場景)透過拖曳方式放入 Scenes In Build 清單中,並確保首頁場景位於編號 0 的位置。
https://ithelp.ithome.com.tw/upload/images/20261004/201840738QgotOLop9.png
圖一、Build Settings場景List

2. 調整 Player Settings 核心參數:

1)點擊 Player Settings... 按鈕進入詳細設定。

2)Company Name / Product Name:填入你的團隊與遊戲名稱(這會影響 Windows 登錄檔與存檔路徑的資料夾命名)。

3)Resolution and Presentation:設定預設的遊戲解析度(例如 16:9 比例的固定視窗或全螢幕)。

4)Publishing Settings (針對 WebGL):若要發布 WebGL,建議將 Compression Format 調整為 Gzip 或 Brotli,確保網頁載入時的壓縮效率與瀏覽器相容性。
https://ithelp.ithome.com.tw/upload/images/20261004/20184073MZ2n6Yu8oL.png
圖二、調整後的 Player Settings 核心參數

四、Unity Editor 與除錯工具應用步驟
1. 執行 Build And Run 快速測試:

1)在 Build Settings 視窗中選擇目標平台(例如 PC, Mac & Linux Standalone 或 WebGL),點擊 Build And Run。

2)選擇一個專屬的輸出資料夾(建議在專案根目錄外開一個 Builds 資料夾),讓 Unity 自動編譯並直接啟動成品進行最終驗證。

2. 藉由 Editor.log 追蹤打包錯誤:
若打包過程中途失敗,點擊 Console 右上角的選單開啟 Open Editor Log,尋找紅字錯誤(如找不到特定腳本參考、貼圖尺寸超出限制等),精準排除問題。
https://ithelp.ithome.com.tw/upload/images/20261004/20184073NB4kUh4QCd.png
圖三、 Build And Run後 Unity 自動編譯並直接啟動成品進行最終驗證

https://ithelp.ithome.com.tw/upload/images/20261004/20184073tNuFKXdnwJ.png
圖四、下載下來的檔案

五、開發實戰經驗:踩坑與架構反思

  • Pitfall 1:漏掉將場景加入 Build Settings

    • 狀況: 程式碼中寫了 SceneManager.LoadScene("GameScene"),結果打包後切換場景直接跳錯。
    • 解法: 檢查 File > Build Settings 裡面是否漏勾或漏放了該場景。
  • Pitfall 2:WebGL 的記憶體與載入瓶頸

    • 狀況: WebGL 打包後檔案過大,玩家打開網頁時卡在 Loading 畫面久久不動。
    • 解法: 在 Player Settings 中檢查是否開啟了 Code Stripping(程式碼裁剪)來縮減專案體積,並避免在 WebGL 中使用過大的未壓縮貼圖。
  • Pitfall 3:跨解析度 UI 跑版與 Canvas Scaler 設定

    • 狀況: 切換打包解析度或發布到不同視窗尺寸時,UI 按鈕(如 Setting)直接位移消失,或是成就選單的排版炸開。
    • 解法: 確保主 Canvas 與跨場景常駐的 PersistentCanvas 皆正確設定為 Scale With Screen Size(建議 Reference Resolution 設為 1920x1080、Match 設為 0.5),並檢查子物件的錨點(Anchors)是否有確實貼齊。
      https://ithelp.ithome.com.tw/upload/images/20261004/20184073uW7gIEYfYJ.png
      圖五、Canvas Scaler 設定
  • Pitfall 4:動態生成 UI (Prefab) 與 Grid Layout Group 調校

    • 狀況: 透過腳本 Instantiate 生成的成就清單(Clone),在 Play 模式下調整位置無效,且因為 Grid Layout Group 的 Spacing 或 Cell Size 沒拿捏好導致圖標重疊或超出外框。
    • 解法: 所有外觀與排版調整必須直接修改源頭的 Prefab,並精準拿捏 Cell Size 與 Spacing 的數值,必要時開啟 Text (TMP) 的 Auto Size 避免文字溢出。

DAY 28 的內容主要是介紹 Unity 專案的跨平台建置與專案打包流程(包含 Build Settings 場景配置、Player Settings 參數調整、Build and Run 測試,以及常見的 WebGL 壓縮、UI 跑版和跨解析度適配等踩坑心得)。因為這已經到了專案開發的尾聲、準備發布成品的階段,它並不屬於某個特定的功能模組(如成就系統),而是屬於整體專案的發布與部署準備階段。在 Git 版控上,我們要放在專門的發布/準備分支 - release/build-setup (可自行更改更好記的名稱)來處理。

1.檢查目前的修改狀態,確認所有改動(如 Project Settings、場景設定等)都在工作區:
git status

2.建立並切換至專屬的發布準備分支:
git checkout -b release/build-setup

3.將專案設定與相關修改加入暫存區並提交 Commit:
git add .
git commit -m "chore: 設定 Build Settings 與 Player Settings,建立 release/build-setup 專屬發布準備分支"

4.將這個新分支推送到遠端倉庫:
git push origin release/build-setup


上一篇
【DAY27】Unity 2D 敘事遊戲開發:效能優化與記憶體管理(Optimization & Garbage Collection)
系列文
從課堂半成品到完整發布:獨立遊戲的30天重生記 共 28 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言