🎮 Unreal Engine 项目文件夹结构规范(推荐标准)
✅ 适用于 UE5 / UE4
✅ 支持多人协作、版本控制(Git / Perforce)、自动化流程
✅ 模块化设计,易于维护与扩展
📁 一、根目录结构(Content/ 下)
所有资源必须位于 Content/ 目录下。建议按功能模块划分一级文件夹:
Content/├── Core/ # 核心系统(跨项目复用)├── Game/ # 当前游戏专属内容├── Plugins/ # 项目级插件(非引擎插件)├── Documentation/ # 项目文档(设计、规范、说明)└── Temp/ # 临时文件(.gitignore 忽略)
💡 命名原则:使用 PascalCase 或 全大写,避免空格和特殊字符。
🧱 二、Core/ — 引擎无关的核心资产(可跨项目复用)
用于存放 通用工具、基础材质、公共蓝图 等,便于在多个项目间共享。
Core/├── Materials/ # 基础材质库(如 M_Master, M_UI_Background)├── Blueprints/ # 通用蓝图(如 BP_Singleton, BP_EventManager)├── Functions/ # 材质函数、蓝图宏库├── Data/ # 全局数据表、枚举、结构体├── UI/ # 通用 UI 控件(按钮、进度条)├── Audio/ # 通用音效(点击、提示音)└── Utilities/ # 调试工具、编辑器辅助脚本
⚠️ 此目录应尽量 无业务逻辑,仅提供“积木”。
🎮三、Game/ — 当前游戏专属内容(主开发区)
这是你日常开发的主要区域,按 功能 + 内容类型 双维度组织。
1. 按功能划分(一级子目录)
Game/
├── Characters/ # 所有角色(玩家、NPC、敌人)
├── Environment/ # 场景、建筑、植被、地形
├── Items/ # 道具、武器、装备、消耗品
├── Gameplay/ # 游戏机制(战斗、任务、经济系统)
├── UI/ # 游戏内界面(菜单、HUD、背包)
├── Audio/ # 游戏专属音效与音乐
├── VFX/ # 视觉特效(粒子、后处理)
├── Cinematics/ # 过场动画、Sequencer 内容
├── Levels/ # 关卡地图
└── Systems/ # 子系统(存档、网络、AI)
2. 每个功能目录下的统一结构(推荐模板)
以 Characters/Player/ 为例:
Characters/└── Player/├── Meshes/ # 静态/骨骼网格(SM_ , SKM_ )├── Materials/ # 材质与实例(M_ , MI_)├── Textures/ # 贴图(T_* )├── Animations/ # 动画序列、蒙太奇、混合空间├── Blueprints/ # 角色蓝图(BP_Player, ABP_Player)├── Physics/ # 物理资产、碰撞体└── Data/ # 角色配置(DataTable 行)
✅ 所有资产严格遵循 命名规范(见下文)。
3. Levels/ 关卡组织建议
Levels/├── _ Templates/ # 关卡模板(带标准光照、后处理)├── MainMenu/ # 主菜单关卡├── Campaign/ # 主线关卡│ ├── Level_01/│ │ ├── Maps/│ │ ├── Blueprints/ # 关卡专属逻辑│ │ └── Data/ # 关卡配置│ └── Level_02/├── Sandbox/ # 开发测试沙盒└── Persistent/ # 持久世界(开放世界项目)
💡 每个关卡单独文件夹,避免资源污染。
🔊 四、Audio/ 音频规范
Audio/├── Music/ # 背景音乐(BGM)├── SFX/ # 音效│ ├── Footsteps/ # 脚步声(按表面类型分)│ ├── Weapons/ # 武器音效│ └── UI/ # 界面音效├── Voice/ # 语音对白(按角色/语言分)├── SoundCues/ # Sound Cue 资产└── MasterBuses/ # 音频总线(Master, SFX, Music)
✅ 原始
.wav文件放在WAV/子目录,Sound Cue 放在SoundCues/。
✨ 五、VFX/ 特效规范
VFX/├── Niagara/ # Niagara 粒子系统├── Materials/ # 特效专用材质├── Textures/ # 特效贴图(火花、烟雾)├── Ribbons/ # 飘带效果└── Simulations/ # 流体、爆炸模拟
💡 避免将特效贴图与角色/环境贴图混放。
📊 六、命名规范(补充)
| 类型 | 前缀 | 示例 |
|---|---|---|
| 静态网格 | SM_ |
SM_Rock_01 |
| 骨骼网格 | SKM_ |
SKM_Player_01 |
| 材质 | M_ |
M_Metal_Base |
| 材质实例 | MI_ |
MI_Metal_Rusty |
| 贴图 | T_ |
T_Rock_01_D |
| 蓝图(Actor) | BP_ |
BP_Interactive_Door |
| 动画蓝图 | ABP_ |
ABP_Player |
| 粒子系统 | PS_ |
PS_Fire_Small |
| 音效 | SFX_ |
SFX_Footstep_Grass |
| UI 控件 | WBP_ |
WBP_MainMenu |
✅ 使用下划线
_分隔,编号从01开始(如_01,_02)。
🛠️ 七、其他重要目录
Plugins/
- 存放 项目级插件(非引擎内置)
- 结构与引擎插件一致:
Plugins/MyPlugin/Content/...
Documentation/
DesignDocs/:游戏设计文档ArtGuidelines/:美术规范TechSpecs/:技术方案README.md:项目快速入门
Temp/
- 临时导出文件、测试资产
- 必须加入
.gitignore
🎯 八、最佳实践总结
| 原则 | 说明 |
|---|---|
| 单一职责 | 每个文件夹只做一件事 |
| 一致性 | 所有模块使用相同子结构 |
| 可搜索性 | 名称包含关键词(如 Player, Fire) |
| 低耦合 | Core/ 与 Game/ 分离,便于复用 |
| 版本友好 | 避免二进制大文件混杂,合理使用 .uasset |
| 自动化支持 | 结构便于脚本批量处理(如资源检查、打包) |
评论区