iT邦幫忙

2026 iThome 鐵人賽

DAY 2
0
Vibe Coding

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

【DAY2】Unity 2D 像素風遊戲開發:專案架構規劃與 Assets 檔案整理歸位

  • 分享至 

  • xImage
  •  

「過去我們用分支劃分責任,現在我們用架構解耦模組;從『能跑就好』到『嚴謹維護』,就是專案邁向上市的必經之路。」

一、前言
在 Day 1 盤點完《平民王冠》在 STD 規格書中殘念的 Failed 項目後,今天正式進入重構的準備階段。在下達第一個 Prompt 請 AI 寫程式碼之前,我重新翻開了當初團隊在 GitHub 上留下的紀錄,不僅勾起了當初與組員熬夜趕工的回憶,也為這次的 AI 協作重構找到了清晰的整理方向。

二、舊 GitHub紀錄檢討與盤點
回顧當初的專案結構,由圖一、圖二、圖三可以看出,雖然建立了 Charater、Scenes、Script、Sounds 等分類資料夾,但也留下了不少初期開發時的痕跡:

  • 資產散落與命名習慣: 仔細查看 Assets 根目錄會發現,初期專案成員因為對 Unity 目錄規範不夠熟悉,許多檔案(如 GameController.cs、InputSystem 設定檔、VolumeProfile 等)直接散落在根目錄未進行歸類;資料夾也留有 _Recovery 或拼寫瑕疵。
  • 幕次責任分工明確: 當時採用「組員代號分支」搭配「幕次進度註記」(如第 15 幕完成、37 幕音效),在多人協作的課堂專題中能直觀追蹤各幕由誰負責。
    https://ithelp.ithome.com.tw/upload/images/20260909/20184073ihXM7W1fkF.png
    圖一、當初《平民王冠》在 GitHub 上的專案整體根目錄與 README

https://ithelp.ithome.com.tw/upload/images/20260909/20184073khSy3g7NPO.png
圖二、點進 Assets 資料夾內部,可看到分類資料夾與散落根目錄的檔案

https://ithelp.ithome.com.tw/upload/images/20260909/201840731YCMlpGMVU.png
圖三、當初以組員代號分支與幕次進度進行開發的 Commit 紀錄

三、轉為個人作業後的重構重點:
過去的做法適合「多人分配頁面」,但這次要轉為「個人 PM + AI 工程師」的開發模式。為了解決這些殘留的技術債,今天的第一步就是進行專案目錄整理:將散落的 .cs 腳本歸位至 Scripts/Core,並重構出標準的 Unity 資產架構。這樣不僅能讓專案煥然一新,更能讓 AI 在後續生成 Code 時精準找到對應位置!
(一)全新的 Git 功能導向分支策略
為了讓 AI 重構的過程精準、可追蹤,且不影響穩定版本,我將 Repository 的分支策略調整為以功能為核心:

  • main:穩定發布版本,只存放驗證通過、可正常執行的成品。
  • refactor/audio-system:專門用於音效架構與 AudioMixer 整合。
  • feature/story-flow:專門用於劇情對話系統與數值連動開發。
  • feature/save-system:專門用於存讀檔架構實作。
  • feature/persistent-ui-achievement:專門用於全域常駐 UI 與成就系統開發。

(二)訂立 AI (Gemini) 協作通訊協定(System Prompt Framework)
為了讓 AI 能精確產出符合 Unity C# 規範的程式碼,我訂立了給 AI 的 System Prompt 框架:

  • 架構規範:全域單例(Singleton)需支援 DontDestroyOnLoad,防止切換場景時物件銷毀。
  • 模組解耦:盡量將資料與 UI 邏輯分離(採用 ScriptableObject 與 Event-driven 模式)。
  • Commit 規範:要求 AI 生成程式碼時附帶中文註解,並依照 Conventional Commits 規範(如 feat:、fix:、refactor:)撰寫提交訊息。

四、整理實作與結果:
將專案壓縮檔解壓縮後,用Unity打開並實施分類、整理。
由圖四可以看出DefaultVolumeProfile、GameController、InputSystem_Actions、SettingsUI、UniversalRenderPipelineGlobalSettings 這些檔案,跟 Script、Sounds 一起擠在 Assets 的第一層,使其看起來相當雜亂。
https://ithelp.ithome.com.tw/upload/images/20260909/20184073B9TpS5ONol.png
圖四、匯入Unity後的檔案

預期分類如下:
GameController.cs ➔ 拖進 Script 資料夾
DefaultVolumeProfile、InputSystem_Actions、UniversalRenderPipelineGlobalSettings ➔ 拖進 Settings 資料夾
SettingsUI ➔ 拖進 Scenes
在整理過程中還發生了一個插曲:當我試圖將 GameController.cs 歸位時,Unity 跳出了檔案衝突警告(圖五)。經清查才發現 Script 資料夾內只有一個未開發的空類別草稿 SceneController.cs,而真正寫有場景載入邏輯 SceneManager.LoadScene 的核心程式碼,反而一直被遺忘在 Assets 根目錄。在刪除廢棄草稿並完成資產歸位後,Assets 根目錄已恢復乾淨。
https://ithelp.ithome.com.tw/upload/images/20260909/20184073PPf8wjGYpa.png
圖五、Unity跳出的衝突警告

版本控制與同步(GitHub Sync):
完成 Unity 端的檔案歸位與刪除後(如圖六所示),打開 VS Code 的 Terminal,切換至 refactor/audio-system 分支並執行 Git 指令將最新變動同步至 GitHub (結果如圖七所示):

  1. git add .
  2. git commit -m "refactor: 完成 Assets 根目錄整理,將 SettingsUI 等資產正確歸位 "
  3. git push origin refactor/audio-system

https://ithelp.ithome.com.tw/upload/images/20260909/201840730JWjSzOeKR.png
圖六、整理完畢後的Assets(Unity)

https://ithelp.ithome.com.tw/upload/images/20260909/20184073K7R34SSkmF.png
圖七、整理完畢後的refactor/audio-system 分支-Assets(GITHUB)


上一篇
【DAY1】Unity 2D 像素風遊戲開發:專案動機、開發目標與遊戲核心概念
下一篇
【DAY3】Unity 2D 像素風遊戲開發:AudioManager 聲音系統底層建置
系列文
從課堂半成品到完整發布:獨立遊戲的30天重生記3
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言