規範

文件夾

按「資產類型」與「功能」混合管理

最常見的做法是在根目錄下建立一個以專案名稱命名的文件夾(避免與外掛插件混淆),然後按照以下結構分類:

  • _ProjectName/ (你的專案主文件夾)

    • Animations/:存放動畫序列、Montage。通常會再細分 Characters/

    • Blueprints/:存放角色、遊戲模式 (GameMode)、組件。

      • Core/:核心架構邏輯。

      • Interfaces/:藍圖介面。

    • Characters/:存放模型 (Skeletal Mesh) 與相關材質。

    • Environment/:場景靜態模型 (Static Mesh)。

    • Maps/:存放 .umap 地圖檔案。通常分 Production/Test/

    • Materials/:存放 Master Materials 與 Functions。

      • Instances/:存放材質實例。

    • VFX/Niagara/:特效文件。

    • UI/:Widget Blueprints 與貼圖。

檔案命名

Actor Component

AC_

Animation Blueprint

ABP_

Blueprint Interface

BI_

Blueprint

BP_

Curve Table

CT_

Data Table

DT_

Enum

E_

Structure

F_

Widget Blueprint

WBP_

Niagara Emitter

FXE_

Niagara System

FXS_

Niagara Function

FXF_

Rig

Rig_

Skeleton

SKEL_

Montages

AM_

Animation Sequence

AS_

Blend Space

BS_

NDisplay Configuration

NDC_

Level Sequence

LS_

Sequencer Edits

EDIT_

Media Source

MS_

Media Output

MO_

Media Player

MP_

Media Profile

MPR_

Other

管理變數名稱

1. 核心格式:大駝峰式命名 (PascalCase)

Unreal 不使用 小駝峰(camelCase)或底線(snake_case)。

  • 規則: 每個單字的首字母都大寫,單字之間不加底線。

  • 範例: MaxHealth, CurrentWeapon, PlayerController

2. 變數命名 (Variables)

除了使用大駝峰,針對不同類型的變數還有一些特定的小習慣:

  • 布林值 (Booleans): * 習慣以 b 作為前綴(在 C++ 中是強制,在藍圖中是好習慣)。

    • 名稱應代表「狀態」或「詢問」。

    • 範例: bIsDead, bCanJump, bHasKey

    • 註:在藍圖面板中,bIsDead 會被自動美化顯示為 "Is Dead"(去掉了 b)。

  • 數值/對象: 直接使用名詞。

    • 範例: WalkSpeed, TargetEnemy

3. 函式/事件命名 (Functions / Events)

  • 動詞開頭: 函式代表一個「動作」。

    • 範例: CalculateDamage, EquipWeapon, UpdateUI

  • 回傳詢問: 如果函式只是用來檢查某事並回傳布林值。

    • 範例: IsDead, HasEnoughMana

4. 常見的命名禁忌 🚫

  • 不要用底線連發: 除了前綴後面的那一個底線,中間不要用 Player_Health_Value(應改為 PlayerHealthValue)。

  • 不要用數字開頭: 1stWeapon 是錯誤的,請用 Weapon01

  • 避免縮寫: 除非是常見縮寫(如 UI, HUD, VR),否則 CharHP 不如 CharacterHealth 清楚。

管理變數

你可以透過以下幾種方式來組織你的變數:


1. 使用 Category(類別)屬性

這是最基本也最常用的方法。

  • 操作方式:

    1. 點擊變數。

    2. 在右側的 Details(細節) 面板中,找到 Category 欄位。

    3. 你可以直接從下拉選單選擇現有的分類,或者直接輸入新的名稱(例如:CombatMovement)。

  • 子分類(Sub-categories):

    • 如果你想建立層級結構,可以使用直線符號 |

    • 範例: 輸入 Stats|HealthStats|Mana

    • 效果: 變數列表會出現一個名為 Stats 的大組,點開後裡面有 HealthMana 子組。

2. 利用資料結構進行物理分類

如果某些變數總是「整組出現」,與其建立 10 個獨立變數,不如將它們打包:

  • Structure (結構體):

    • 在 Content Browser 建立一個 User Defined Structure

    • 將相關變數(如 CurrentHP, MaxHP, HealthRegen)全放進去。

    • 在藍圖中只需要建立一個該 Structure 類型的變數即可。這能大幅減少變數列表的長度。


3. 命名慣例的「視覺分類」

正如我們之前討論的命名規則,良好的前綴本身就是一種分類:

  • 所有布林值都以 b 開頭(bIsJumping)。

  • 所有組件引用以 Comp_ 開頭。

  • 這讓你即便不看分類,光看名字就能知道變數的性質。

4. 變數存取權限分類

在 Details 面板中,你還可以用以下方式區分變數的用途:

  • Instance Editable (小眼睛圖示): 打開後,該變數會出現在關卡編輯器的細節面板中,方便快速調整數值。

  • Private: 勾選後,該變數不會被子類(Child Blueprint)存取,這有助於隱藏內部邏輯變數,防止混亂。


💡 實戰建議:推薦的分類清單

你可以參考這套分類邏輯來整理你的角色藍圖:

  • Config:存放那些你需要在編輯器調整的參數(如 WalkSpeedJumpHeight)。

  • State:存放當前狀態布林值(如 bIsDeadbIsInCombat)。

  • Internal:存放不需要被外部看見的計算用變數。

  • References:存放對其他 Actor 或 Component 的引用(如 TargetEnemy)。

Last updated