规范Unity工程目录和脚本结构能有效提升开发效率、降低维护成本。以下是推荐的目录结构和脚本管理方案,适用于大多数项目:
一、工程目录结构规范
1. 根目录结构
ProjectRoot/
├── Assets/ → 核心资源目录(Unity自动生成)
├── ProjectSettings/ → 项目配置(Unity自动生成)
├── Packages/ → 包管理(Unity自动生成)
└── UserPrefs/ → 本地用户配置(可选,Git忽略)
2. Assets 目录细分
Assets/
├── _Project/ → 核心项目文件(强制命名规范)
│ ├── Scenes/ → 场景文件(按模块/关卡划分)
│ │ ├── Main/ → 主场景(加载、初始化)
│ │ └── Game/ → 游戏核心场景
│ ├── Scripts/ → 脚本目录(见下文详细结构)
│ ├── Art/ → 美术资源(按类型细分)
│ │ ├── Textures/ → 纹理(PNG/PSD)
│ │ ├── Materials/→ 材质(Shader/材质球)
│ │ ├── Models/ → 3D模型(FBX/OBJ)
│ │ ├── Animations/→ 动画控制器/动画Clip
│ │ └── UI/ → UI资源(图集/字体/预制件)
│ ├── Audio/ → 音频资源(WAV/MP3)
│ ├── Prefabs/ → 预制件(按功能分类)
│ ├── Resources/ → Unity自动加载资源(谨慎使用)
│ ├── Plugins/ → 原生插件(分平台存放)
│ │ ├── Android/ → Android专用插件
│ │ └── iOS/ → iOS专用插件
│ ├── StreamingAssets/ → 原生文件(JSON/配置表)
│ └── Localization/ → 多语言配置
├── ThirdParty/ → 第三方SDK(非Package Manager)
└── Editor/ → 编辑器扩展脚本(仅在编辑器生效)
二、脚本目录结构规范
1. 基础分层(按功能模块)
Scripts/
├── Core/ → 核心框架(生命周期、事件系统)
├── Managers/ → 全局管理器(单例模式)
│ ├── AudioManager.cs
│ ├── UIManager.cs
│ └── GameManager.cs
├── Controllers/ → 业务逻辑控制器
│ ├── PlayerController.cs
│ └── EnemyController.cs
├── Systems/ → 系统级功能(物理/网络/AI)
├── UI/ → UI相关逻辑
│ ├── Screens/ → 界面基类
│ └── Widgets/ → 组件基类
├── Utilities/ → 工具类(扩展方法/辅助函数)
├── Data/ → 数据模型(ScriptableObject配置)
└── Tests/ → 单元测试(EditMode/PlayMode)
2. 进阶分层(MVC/MVVM模式)
Scripts/
├── Model/ → 数据模型层
├── View/ → 界面表现层
├── Controller/ → 逻辑控制层
└── ViewModel/ → 数据绑定层(可选)
三、关键规范原则
-
命名一致性
- 文件夹使用
PascalCase
(如PlayerAbilities
) - 脚本使用
PascalCase
(如HealthSystem.cs
) - 资源使用
snake_case
或lowercase
(如player_idle.png
)
- 文件夹使用
-
资源管理
- 避免滥用
Resources
文件夹,优先使用Addressables
- 图集(Sprite Atlas)按模块划分,减少Draw Call
- 音频文件按类型分
BGM/
、SFX/
、Voice/
- 避免滥用
-
脚本优化
- 使用
Assembly Definition
分模块编译(减少编译时间) - 公共基类统一放在
Core/Base/
(如MonoSingleton.cs
) - 禁止在
Update
中写复杂逻辑,改用事件驱动或协程
- 使用
-
版本控制
- 忽略
Library/
、Temp/
、*.csproj
等生成文件 - 强制提交
.meta
文件,避免资源UUID冲突 - 使用
Git LFS
管理大文件(如模型/音频)
- 忽略
四、示例:完整目录结构
Assets/
├── _Project/
│ ├── Scenes/
│ │ ├── MainMenu.unity
│ │ └── Level01.unity
│ ├── Scripts/
│ │ ├── Core/
│ │ │ └── GameLoop.cs
│ │ ├── Managers/
│ │ │ └── SceneManager.cs
│ │ └── UI/
│ │ └── MainMenuUI.cs
│ ├── Art/
│ │ ├── Characters/
│ │ │ ├── Player/
│ │ │ │ ├── player_model.fbx
│ │ │ │ └── player_idle.png
│ │ │ └── Enemy/
│ │ │ └── enemy_red.png
│ │ └── UI/
│ │ └── button_style.mat
│ └── Prefabs/
│ ├── Player.prefab
│ └── Enemy.prefab
├── Plugins/
│ └── Firebase/
│ └── firebase_unity.dll
└── Editor/└── CustomInspector.cs
五、工具推荐
- Asset管理:Unity的
Addressables
或AssetBundle
- 代码生成:
Visual Studio Tools for Unity
- 依赖管理:
Unity Package Manager (UPM)
- 静态分析:
JetBrains Rider
或Visual Studio Analyzer
通过以上规范,可实现:
- 团队协作清晰可控
- 资源加载高效有序
- 代码维护成本降低
- 项目扩展灵活便捷
根据项目规模可适当简化或扩展,但需保持全局一致性。