Files
unity/Docs/Production/ProjectConventions.md
RCiBot 92623a1bc8 feat: establish mech extraction prototype with bilingual UI
Track Unity source, scenes, editable assets, licenses, tools and QA evidence. Exclude generated caches, Windows builds and raw runtime logs.
2026-11-12 12:28:40 +08:00

61 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 项目文件与素材规范
本项目通过 **Unity MCP 操作 Unity 工程,通过 Blender MCP 完成 3D 制作**,首个可玩版在 **Windows PC 上用键盘与鼠标验收**。建档时工程记录的编辑器版本为 `6000.6.8f1`,示例场景 `Assets/Scenes/SampleScene.unity` 包含主相机和方向光。灰盒阶段沿用现有渲染配置。
## MCP 操作与文件交接
- Unity 场景、对象、组件、预制体、导入设置与构建通过 Unity MCP 操作,修改前回读工程路径、当前场景与目标对象。文件保存后检查层级、引用和 Console。
- C#、UXML、USS 与项目文档可通过工作区工具编辑。代码落盘后通过 Unity MCP 刷新并等待编译,再进行播放与测试。Unity 资产引用和 meta 由编辑器维护。
- Blender MCP 开始制作前读取当前文件与场景,在该资产的项目集合中工作。保存可编辑的 blend 源文件,按选定对象导出模型、骨架和必要挂点,检查尺寸和多角度预览。
- 下载工具负责从公开资源页取得免费文件与许可原文,原始文件先归档,再由 Blender MCP 修整或由 Unity MCP 导入。运行时使用的模型、声音、代码及派生文件都能沿 [素材台账](AssetSources.md) 追溯到原始条目。
## Windows 构建验收
- 首轮采用 Windows x86-64 独立构建,产物放在 `Builds/Windows/x64/`,构建场景列表应包含本次交付的入口。直接运行可执行文件,用键鼠走完当前阶段的验收场景。默认键位见 [玩法设计](../Design/GameDesign.md)。
- 驾驶试验场检查移动中精瞄、推进时切视角,以及切出窗口再返回时的鼠标捕获。恢复驾驶需重新按键才触发射击。单战区阶段追加货仓选择、发射中断和主动登机,确认菜单点击与战斗输入各自响应。
- 首轮性能目标取 **1920 × 1080、中等画质、60 FPS**。在同一台测试机预热场景后,分别采样越肩和第一人称下的代表性战斗,以第 95 百分位帧耗时不超过 16.7 毫秒为目标。记录测试机 CPU、GPU、内存、画质配置与实测结果,场景加载耗时另记。
阶段任务及对应的验收用例见 [落地开发计划](ImplementationPlan.md)。
## 新文件放在哪里
目录按实际产出的文件建立。保留现有的 Unity 场景目录和编辑器工具目录。
| 仓库相对路径 | 用途与示例 |
| --- | --- |
| `Assets/Scenes/` | 可打开或构建的场景。第一座灰盒试验场用 `MechTestRange.unity`。 |
| `Assets/Editor/` | Unity 编辑器工具,例如批量核查模型挂点。 |
| `Assets/Game/Input/` | 键鼠输入的 Input Actions 资产与配置。驾驶和界面动作统一在此维护。 |
| `Assets/Game/Scripts/` | 自研运行时代码,按玩法划分为 Mechs、Combat、Equipment、Loot、Extraction、Runs、UI、Save。脚本与主类型同名,例如 `Extraction/CargoPod.cs`。 |
| `Assets/Game/Data/` | 底盘、装备、掉落表、战区目标的可编辑配置。各机体从配置读取数值,共用运行逻辑。 |
| `Assets/Game/Prefabs/` | 可复用的机甲、场景交互物、敌人和界面预制体。外部模型的玩法组件挂在项目自己的预制体上。 |
| `Assets/Game/Art/` | Unity 使用的模型、材质、纹理、动画和特效,分别放在 Models、Materials、Textures、Animations、VFX。 |
| `Assets/Game/Audio/` | 游戏使用的自制音效与音乐,按 SFX、Music 划分。例 `SFX/SFX_Mech_Boost_Start.wav`。 |
| `Assets/Game/UI/` | 驾驶舱与越肩 HUD 的图标、字体和布局资源。第三方字体原件及许可归第三方目录管理。 |
| `Assets/Game/Localization/` | 语言定义、文本表与语言设置;代码放在 `Assets/Game/Scripts/Localization/`,派生字体放在 `Assets/Game/UI/Fonts/`。翻译保留玩法 ID 与存档内容。 |
| `Assets/ThirdParty/<作者或发行方>/<资源包>/` | 直接导入的外部模型、声音、代码和随附许可。对有固定导入路径的包沿用其要求,并在台账记实际位置。 |
| `Packages/` | 由 Unity 包管理器安装的依赖,保留 manifest 和锁定文件。 |
| `SourceAssets/Blender/` | 可编辑的 Blender 源文件,按 Mechs、Environment、Props 分组。 |
| `SourceAssets/Audio/` | 音频母带、剪辑工程和分轨。Unity 使用的导出物进 Audio 目录。 |
| `SourceAssets/ThirdParty/<作者或发行方>/<资源包>/` | 下载的原始压缩包、原始模型、原音频及随附说明。处理后的 Blender 源文件进 SourceAssets/Blender,Unity 导入物进 Assets/ThirdParty 对应包目录。 |
| `Tools/Blender/` | 在 Blender MCP 中使用的可复用导出、尺寸或挂点校验脚本。 |
| `Docs/Design/`、`Docs/Production/` | 玩法方案、制作约定和素材记录。外部许可原文可归档在 `Docs/Production/Licenses/<作者或发行方>/<资源包>/`。 |
| `Docs/QA/` | 随实际构建建立的操作验收、问题复现与性能记录。 |
## 一台机甲的文件流向
Blender MCP 保存建模源文件 `SourceAssets/Blender/Mechs/Mech_Scout_A.blend`,导出到 `Assets/Game/Art/Models/Mechs/Mech_Scout_A.fbx`。Unity MCP 导入后,将驾驶组件组装为 `Assets/Game/Prefabs/Mechs/Mech_Scout_A.prefab`。调整基础操控数值时改底盘配置,换美术模型时复用已有机体行为。
- 模型以米为尺度,导出前检查原点与变换。在 Unity 试验场核对大小、前进方向、碰撞体、武器挂点和驾驶舱视点。用同一个掩体检查越肩遮挡和第一人称舱框。
- 新脚本按 C# 类型名命名。资产名包含对象与用途,例如 `Mech_Scout_A`、`SFX_Mech_Boost_Start`。外部资产保留包内结构,项目侧的修改放在自己的预制体、材质变体或适配代码中。
- 通过 Unity MCP 在编辑器中移动或重命名已导入资产,并回读引用。采用版本控制时,把资产与对应的 `.meta` 一起提交,同时保留 `ProjectSettings/`、包清单和锁定文件。本地生成的 Library、Temp、Logs、UserSettings 与构建产物由各自环境管理。
- 源文件、导出模型、配置和预制体共用可追溯的资产编号。模型根节点、武器挂点和驾驶舱视点使用稳定名称,导出后重新导入时核对现有预制体引用。
## 使用公开免费素材
按具体条目的许可选择模型、音效和代码。下载时记下作者、原始条目链接、版本或下载日期、许可及署名文字,保存实际使用的许可说明。原始文件记录 SHA-256,导入后登记本地路径以及做过的裁剪、重拓扑、转码或代码修改,发布时从记录生成署名名单。
使用顺序为「查条目和许可 → 下载并归档原件 → Blender MCP 修整或音频处理 → Unity MCP 导入 → 挂接预制体和配置 → 场景验证 → 台账记录实际结果」。免费资源的检索入口和逐项记录统一放在 [素材来源与导入台账](AssetSources.md)。UPM 依赖的版本由 `Packages/manifest.json` 和 `Packages/packages-lock.json` 锁定,外部代码同时保留对应许可。
代码与模型的试改采用项目目录中的适配组件、材质或预制体变体。素材替换时先在一个已验证场景回读导入结果,确认脚本组件、碰撞体、相机和武器挂点,再扩展到其他场景。