一份能直接照搬的 Unity 工程目录指引,涵盖顶层结构、常见子目录用途与 Git 忽略清单,帮团队快速落地规范。
为什么要统一目录结构
统一的目录命名与归类能缩短新成员熟悉项目的时间,也方便脚本、资源与自动化流程的管理。尤其在多人协作、持续集成场景下,目录结构越干净,成本越低。
顶层结构速查
| 目录 |
核心内容 |
说明 |
Assets/ |
项目资源与代码 |
分自研 _Project、插件 Plugins、第三方 ThirdParty 等模块 |
Packages/ |
包清单与本地包 |
记录 Unity Package Manager 依赖,建议纳入版本控制 |
ProjectSettings/ |
项目级配置(渲染、输入等) |
不同平台/分支会变动,协作时务必提交 |
UserSettings/ |
本地偏好(编辑器布局、缓存等) |
只影响个人环境,通常放入 .gitignore |
新建项目后,可先按表格搭好骨架,再逐步填充具体资源,避免后期大规模改动。
Assets 目录拆解
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| Assets/ _Project/ # 项目自研内容 Scripts/ Runtime/ # 运行时逻辑脚本 Editor/ # 仅在编辑器生效的工具脚本 Scenes/ # 场景文件 Prefabs/ # 预制体 Materials/ # 材质 Shaders/ # Shader 与着色资源 Textures/ # 贴图 Models/ # 模型 Audio/ # 音频 Animations/ # 动画与 Animator Controller UI/ # UI 相关素材与预制 Resources/ # Resources.Load 所需文件(谨慎使用) Plugins/ # 官方或商业插件(保持只读) ThirdParty/ # 开源库、SDK 等第三方资源 Gizmos/ # 自定义 Gizmo 图标 StreamingAssets/ # 原样打包的流式资源
|
_Project/:自研内容集中地
- Scripts/Runtime:对外提供
namespace,按功能模块拆子目录,保持一功能一文件夹。
- Scripts/Editor:只放编辑器扩展脚本,避免被打进最终包体;必要时用
#if UNITY_EDITOR 防御。
- Scenes/:以功能划分,如
MainMenu.unity、Gameplay.unity。多人协作时先锁定再修改,减少冲突。
- Prefabs/:按业务模块或 UI 层级再细分,如
Prefabs/UI/、Prefabs/Enemies/。
- Resources/:仅留必须在运行时动态加载的资源,并配合 Addressables 或自定义加载器做出清单管理。
插件与第三方资源
- Plugins/:保持原目录结构,方便升级;若需修改,先 fork 并在 README 中记录差异。
- ThirdParty/:用于存放 SDK、开源库或工具包,建议附带版本说明文档。
- Gizmos/:放置场景视图的图标,帮助调试定位。
- StreamingAssets/:原样打进包体的资源,如字典表、本地化或解压包。
Packages/、ProjectSettings/ 与 UserSettings/
- Packages/:
manifest.json 与 packages-lock.json 共同决定依赖,团队统一安装后直接提交。
- ProjectSettings/:涉及 Build、Quality、Input 等关键配置;平台切换时注意同步。
- UserSettings/:包含布局、缓存等个人数据,正常情况下放进
.gitignore 即可。
推荐 .gitignore
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
| # ===== Unity 临时缓存(可再生成)===== [Ll]ibrary/ [Tt]emp/ [Oo]bj/ [Bb]uild/ [Bb]uilds/ [Ll]ogs/ [Mm]emoryCaptures/ UserSettings/
# ===== Unity 录制与诊断输出 ===== [Rr]ecordings/ sysinfo.txt mono_crash.*
# ===== IDE 与工程配置(自动生成)===== .vs/ .gradle/ ExportedObj/ .consulo/ .idea/ .vscode/ *.code-workspace *.DotSettings.user
# ===== 解决方案与调试产物 ===== *.csproj *.unityproj *.sln *.suo *.tmp *.user *.userprefs *.pidb *.pidb.meta *.booproj *.svd *.pdb *.pdb.meta *.mdb *.mdb.meta *.opendb *.VC.db
# ===== 构建输出与分发包 ===== *.apk *.aab *.unitypackage
# ===== 第三方插件(按需忽略示例)===== # JetBrains Rider 插件(Unity 自动生成) [Aa]ssets/Plugins/Editor/JetBrains* # Asset Store 工具(若不需提交请取消注释) #[Aa]ssets/AssetStoreTools* # Ludiq Peek 示例 Assets/Ludiq/Ludiq.PeekCore Assets/Ludiq/Ludiq.Peek Assets/Ludiq.Generated/Transient # Odin Inspector 演示与 AOT 输出 Assets/Plugins/Sirenix/Assemblies/AOT/* Assets/Plugins/Sirenix/Demos/* !/Assets/Plugins/Sirenix/Demos/*.unitypackage # Gaia 示例资源 Assets/Procedural*Worlds/Gaia/Asset*Samples/* Assets/Samples/Terrain*Tools/*
# ===== 系统垃圾文件(macOS / Windows)===== .DS_Store .AppleDouble .LSOverride Icon ._* .DocumentRevisions-V100 .fseventsd .Spotlight-V100 .TemporaryItems .Trashes .VolumeIcon.icns .com.apple.timemachine.donotpresent .AppleDB .AppleDesktop Network Trash Folder Temporary Items .apdisk Thumbs.db Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db *.stackdump [Dd]esktop.ini $RECYCLE.BIN/ *.cab *.msi *.msix *.msm *.msp *.lnk
|
若团队引入新的构建目录或缓存文件,先确认是否确实需要忽略,再更新规则,避免误删必要资产。
落地建议
- 新增模块前先约定命名:例如 UI 统一前缀
UI_,资源引用更直观。
- 变更目录记得同步文档:配合项目 Wiki 或 README,减少“找不到资源”的沟通成本。
- 定期复查:版本迭代或团队调整后,安排一次目录体检,确保结构与当前需求一致。