跳至主要内容

[Unity] 專案結構

Unity 專案結構

Unity 專案結構大致上長這樣:

📁 MyUnityProject/
├── 📁 Assets/ ← 你做的圖、音、腳本全都在這
├── 📁 Packages/ ← 套件管理
├── 📁 ProjectSettings/ ← 專案整體設定(畫質、輸出平台、按鍵設定等)
├── 📄 .gitignore ← 告訴 Git 哪些檔案不要上傳
├── 📄 .vsconfig ← VS 編輯器的設定

所以基本上無論是美術、UI/UX 設計師、亦或是程式設計師,大家基本都是在 Assets 資料夾裡面工作。

Assets 資料夾

建完專案後,打開 Assets 資料夾,初始結構會類似這樣:

Assets/
├── DefaultVolumeProfile.asset # URP 的後製 Volume 設定檔
├── DefaultVolumeProfile.asset.meta # 上述設定的 .meta 檔(包含 GUID 與匯入設定)

├── InputSystem_Actions.inputactions # Unity 新版 Input System 的輸入綁定資源
├── InputSystem_Actions.inputactions.meta # 對應的 .meta 檔案

├── Scenes/ # 預設的場景資料夾(空)
├── Scenes.meta # Scenes 資料夾的 meta 檔,不是在 Scenes 裡面喔!

├── Settings/ # 預設建立的專案設定資料夾
├── Settings.meta # Settings 資料夾的 meta 檔

├── UniversalRenderPipelineGlobalSettings.asset # URP 的全域渲染管線設定
├── UniversalRenderPipelineGlobalSettings.asset.meta # 對應 URP 設定的 meta 檔

可以看到除了 ScenesSettings 資料夾外,其它檔案基本是跟 URP 以及 Input System 有關的設定檔。
這些是 Universal 2D 模板自動產生的檔案,基本上可以先放著他們不要理。

協作時 Assets 建議的架構

開發一款遊戲時,除了專門寫 code 的工程師外,還會有美術、UI/UX 設計師、劇情編劇等。那大家都要在 Assets folder 裡工作的話理所當然要為大家劃分工作區域。一方面是達到分流,一方面也是遊戲最後的整合者 - 工程師,可以方便迅速知道要取哪裡找相關資源。
Unity 給予使用者很大的自由去自訂資料夾結構,其實依團隊並沒有一定的架構,每個團隊都有各自喜歡的結構,以下是我將團隊架構與 ChatGpt 說明後產生的建議結構:

Assets/
├── Art/ ← 🎨 美術素材(角色、場景、物件圖)
│ ├── Characters/ ← 角色立繪、行走圖、切片等
│ ├── Environments/ ← 背景、場景圖
│ └── Effects/ ← 火焰、水波等特效圖(非動畫)

├── UI/ ← UI 設計相關資源
│ ├── Sprites/ ← UI 元素圖(icon、按鈕、底圖等)
│ ├── Prefabs/ ← 純 UI prefab(無程式控制)
│ └── Layouts/ ← UI 排版、設計 layout 範本

├── Prefabs/ ← ✅ 工程 prefab(含腳本、邏輯)
│ ├── Characters/ ← 組裝好的角色 prefab(動畫 + 控制)
│ ├── Props/ ← 場景用互動物件(開關、箱子)
│ └── UI/ ← 有程式控制的 UI prefab(如選單、對話框)

├── Audio/ ← 🎵 音效與音樂
│ ├── BGM/ ← 背景音樂
│ └── SFX/ ← 短音效(攻擊、點擊、UI 聲)

├── Scripts/ ← 📜 C# 程式碼
│ ├── Systems/ ← 核心系統邏輯(戰鬥、任務、存檔等)
│ ├── Components/ ← 掛載用元件(控制器、偵測器)
│ ├── UI/ ← 控制 UI 行為的程式
│ └── Data/ ← ScriptableObject 與資料模型

├── Scenes/ ← 場景檔案(.unity)
│ └── MainMenu.unity

├── Texts/ ← 📘 文本資料(劇情、對話、翻譯)
│ ├── Dialogues/ ← 對話資料(json、csv、Ink)
│ ├── Story/ ← 世界觀與劇情流程
│ └── Localization/ ← 多語系文案(zh-TW、en-US)

├── Animations/ ← 動畫與控制器
│ ├── Characters/ ← 角色動畫(.anim, Animator)
│ └── UI/ ← UI 動畫(按鈕動畫、進場動畫)

├── Data/ ← 純資料(非程式邏輯)
│ ├── ScriptableObjects/ ← 可序列化的資料(如角色屬性、道具)
│ ├── JSON/ ← 關卡資訊、事件設定等 JSON
│ └── CSV/ ← 翻譯、設定表等資料表格

├── Materials/ ← 材質設定檔(Material)

└── Plugins/ ← 插件、Asset Store 套件(如 DOTween)

Assets 資料夾與檔案的命名規則

在這裡我參考了一些遊戲開發團隊公開 repo 裡的命名規範整理出了一套通用原則,大概依用途以及開發者身份來區分。
基本上先說唯一的通則,這是工程師、美術設計師、UI/UX 設計師、編劇都該遵守的:

資料夾的命名一律採用 PascalCase(每個單字的第一個字母大寫),例如 MyFolder

檔案的命名則依身份有所分別:

  1. 工程師:因為牽涉到 C#,所以以 PascalCase 為主。
  2. 美術設計師、UI/UX 設計師、編劇:PascalCase 混合 snake_case (首字大寫 + _ 分隔片段),例如:Bird_01.pngCactus_Large_Doube.pngAct1_Scott_Talk_01.yaml