5. 3D游戏文件分类与结构设计
2026/4/14大约 2 分钟
3D游戏文件分类与结构设计
这一章回答一个问题:3D 游戏的文件怎么放才好维护?和 2D 项目结构有什么不同?
为什么文件结构重要
3D 游戏的文件数量通常远超 2D 游戏。一个中等规模的 3D 游戏可能有上千个文件——模型、贴图、动画、音效、脚本、场景……如果没有好的组织方式,很快就会变成一团乱麻。
推荐的目录结构
my-3d-game/
├── project.godot
├── README.md
│
├── assets/ # 所有美术素材
│ ├── models/ # 3D 模型
│ │ ├── characters/ # 角色模型
│ │ │ ├── player/ # 玩家角色
│ │ │ └── enemies/ # 敌人
│ │ ├── environment/ # 环境模型
│ │ │ ├── trees/ # 树木
│ │ │ ├── rocks/ # 石头
│ │ │ └── buildings/ # 建筑
│ │ └── props/ # 道具和装饰
│ │
│ ├── textures/ # 贴图
│ │ ├── characters/ # 角色贴图
│ │ ├── environment/ # 环境贴图
│ │ └── ui/ # UI 贴图
│ │
│ ├── materials/ # 材质文件(.tres)
│ │
│ ├── audio/ # 音频
│ │ ├── sfx/ # 音效
│ │ ├── music/ # 音乐
│ │ └── ambient/ # 环境音
│ │
│ └── fonts/ # 字体
│
├── scenes/ # 场景文件
│ ├── levels/ # 关卡场景
│ ├── characters/ # 角色场景
│ ├── enemies/ # 敌人场景
│ ├── ui/ # UI 场景
│ └── environment/ # 环境场景
│
├── scripts/ # 脚本文件
│ ├── characters/ # 角色脚本
│ ├── ai/ # AI 脚本
│ ├── systems/ # 游戏系统
│ ├── utils/ # 工具函数
│ └── ui/ # UI 脚本
│
├── resources/ # 自定义资源
│ ├── data/ # 游戏数据(JSON/Resource)
│ └── configs/ # 配置文件
│
└── addons/ # 插件和 2D 项目的主要区别
| 方面 | 2D 项目 | 3D 项目 |
|---|---|---|
| 模型 | 不需要 | 需要单独的 models 目录 |
| 贴图 | 主要是精灵图(Sprite) | PBR 贴图组(Albedo + Normal + Roughness 等) |
| 材质 | 很少单独存 | 经常单独存为 .tres 文件复用 |
| 动画 | Sprite 帧动画 | 骨骼动画,可能有大量 .tres 动画文件 |
| 场景 | 相对简单 | 通常分层(角色场景、环境场景、关卡场景) |
命名规范
| 类型 | 规范 | 示例 |
|---|---|---|
| 场景文件 | snake_case.tscn | player.tscn、main_menu.tscn |
| 脚本文件 | snake_case.gd 或 PascalCase.cs | player_controller.gd、PlayerController.cs |
| 模型文件 | snake_case.glb | character_soldier.glb |
| 贴图文件 | snake_case_类型.png | wall_albedo.png、wall_normal.png |
| 材质文件 | snake_case.tres | metal_dark.tres |
关键原则
- 按类型分目录:模型、贴图、音效、脚本各归各位
- 按功能分子目录:角色、敌人、环境、UI 各有子目录
- 命名有含义:看到文件名就知道是什么
- 保持一致:团队内统一规范,不要随意改风格
- 不要太深:目录层级不要超过 4 层,否则找文件很痛苦
