1744 字
9 分钟
Godot C# 零基础教程 09:导出发布与学习路线图
教程一 · 第 9 章:导出发布与后续路线图
游戏在编辑器里跑不算完成,玩家拿到的是导出包。本章走通 Windows、Web、Android 三个平台,然后给一张可执行的进阶路线图。
9.1 导出模板
第一次导出必须装与编辑器版本号完全一致的导出模板:
- 编辑器 → 管理导出模板(项目 → 导出对话框右上角也有入口)
- 下载并安装约 1GB 的模板(.NET 版包含 C# 运行时)
- 版本必须严格一致(4.7.2 编辑器配 4.7.2 模板),不一致会红字报错
9.2 导出 Windows
项目 → 导出 → 添加 → Windows Desktop:
- .NET 版关键选项:
- 导出方式:默认产出
.exe+.pdb+data_*目录(.NET 程序集)。这是正常的,别只拷 exe - 想单文件分发:勾选 “Embed Dotnet DLLs/C# 单文件” 相关选项(4.x 中叫 Embed MSIL / 单文件打包),产物体积大一点但只有一个 exe
- 导出方式:默认产出
- Architecture:x86_64
- 纹理压缩按默认(桌面用无损/VRST 都行)
- 图标:准备 256×256 ICO
- Product Name、公司名填好
导出后:
- 务必把产物目录整个拷到别人机器上测试,你机器上有 .NET SDK 和各种环境,不能代表干净系统
- SmartScreen 首次运行会拦(未签名应用的常态),买代码签名证书(一年几百到几千元)才能消除;个人发布初期直接写说明让用户点”仍要运行”
- 想上 Steam:Steamworks SDK + Godot Steam 扩展,那是独立的一课,先 itch.io 发布练手
9.3 导出 Web(itch.io / 自己的网页)
C# 的 Web 导出在 4.x 已经可用(依赖 .NET 8+ / WASM 工具链),但有几个坑:
- 导出预设选 Web
- SharedArrayBuffer 要求:服务器必须发两个响应头(itch.io 默认已配;自建服务器/Nginx 要自己加):
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp
- 本地测试:在导出目录跑
python -m http.server 8060后用 Chrome 打开,不要双击 index.html(浏览器安全策略下 file:// 跑不起来) - 限制:不支持线程相关 API 的部分用法、文件系统受限(存档要用
user://,浏览器映射到 IndexedDB)、首次加载较大 - 移动端浏览器适配要额外调触摸输入和视口
演示 Demo 上 Web 是极好的选择:链接即玩,转化率远高于下载。
9.4 导出 Android
环境准备(最繁琐的一个):
- 装 Android Studio(只为拿 SDK/JDK,不用写 Android 代码),SDK Manager 装 Platform、Build-Tools、Platform-Tools
- Godot → 编辑器设置 → Export → Android:指定 JDK、Android SDK 路径
- 生成签名 keystore(一次):
在导出设置里填 keystore 路径和两个密码。这个文件丢了就永远无法给同一个应用发更新,多盘备份
Terminal window keytool -v -genkey -keystore my.keystore -alias mygame -keyalg RSA -keysize 2048 -validity 10000 - 导出预设选 Android,包名形如
com.yourname.gamename
- .NET 版 Android 导出要求 .NET SDK 9 或更高(文档明确)
- 触摸:UI 按钮天然可用;虚拟摇杆自己做两个 TouchScreenButton 或用 Input 事件手写
- 性能:Forward+ 对中低端机偏重,手游项目渲染器选 Mobile
- 上架 Google Play 需开发者账号(25 美元一次性);国内安卓渠道各自为政,独立开发者一般先走 TapTap
9.5 iOS / macOS / Linux
- macOS:导出需要 Mac(或 CI 云 Mac),Apple Developer ID(99 美元/年),公证流程;Godot 文档 “Exporting for macOS” 一步步照做
- iOS:同样要 Mac + 开发者账号;Xcode 工程由 Godot 生成后归档上传
- Linux:x86_64 导出几乎零配置,AppImage/zip 分发,Steam 兼容性好
9.6 发布前清单
技术
- 导出模板版本与编辑器一致
- 干净机器测试 Windows 包、浏览器测 Web 包
-
user://读写正常,存档不会因更新丢失 - 退出时存档、异常断电容忍(先写临时文件再替换)
- 分辨率/全屏/手柄在至少两台机器验证
- 控制台没有红字、没有 GD.Print 刷屏
- 代码里没有作弊调试键(F1 加钱之类)
- C# 异常全局兜底:
GD.UnhandledException记日志,别让玩家看到白屏不知道为啥
内容
- 游戏内有标题、版本号(v0.1 写在角落)
- 新手 30 秒内能上手(首分钟体验最重要)
- 音量默认不炸耳朵;BGM/SFX 比例合适
- 至少一个完整的起承转合循环(Demo 也要有”结束感”)
- 许可合规:字体、音效、图片全有商用许可(Kenney CC0 最省心);第三方协议文件随包附上(Godot 自身 MIT 也建议附)
9.7 之后学什么:路线图
阶段 A:把本教程的作业都做完(约 20–40 小时) Pong、平台跳跃、武器系统、菜单、暂停、导出。能独立做出来,你已经超过 80% “看了十集教程但没做完过一个游戏”的人。
阶段 B:做一个小型完整游戏并发布(1–2 个月) 范围控制是核心能力。推荐品类:肉鸽小游戏(一局 5 分钟)、弹幕、解谜、类吸血鬼幸存者。必须发布:itch.io 免费页或发给朋友。做完一个完整闭环(开始→失败/胜利→重开)比学十个高级特性值钱。
阶段 C:补引擎深度(按需,不要提前学)
- 状态机/行为树:敌人 AI;先用 C# 状态模式(教程二第 5 章后你就有语言基础)
- NavigationServer2D/3D:导航网格自动寻路
- TileMap 进阶 + Y-sort:2D 俯视角色前后遮挡
- Shader:Canvas Shader 从水面、闪白、溶解入门;The Book of Shaders 打图形基础
- 3D:导入模型(Blender 基础)、灯光烘焙、AnimationTree 状态机混合
- 多语言本地化、手柄重绑定、Steam SDK、成就
阶段 D:工程化(项目变大时)
- NuGet 第三方库(Json:Newtonsoft.Json;DI:Microsoft.Extensions.DependencyInjection,谨慎)
- 单元测试:Godot Test Driver / xUnit + 把纯逻辑从 Node 中剥离
- Git:
.gitignore忽略.godot/、导出产物;场景文件是文本可合并,但别让两人同时改一个 .tscn - CI:GitHub Actions 跑
dotnet build,导出自动化
教程资源
- 官方文档(质量很高,C# 页示例齐全):docs.godotengine.org
- GDScript 教程照样能学:90% 操作完全一样,查 API 时把 GDScript 语法翻成 C#(信号
connect→+=,$Node→GetNode,export→[Export]),翻不过来的查官方 C# 页 - 源码即文档:API 命名规律极强,VS Code 里 F12 跳转看 GodotSharp 定义
- GitHub 上的 C# Godot 项目,读真实代码
9.8 写在最后
Godot 学习最大的坑不是引擎难,是教程地狱:一直看、一直跟着敲、从没做过自己的东西。从第 3 章的 Pong 开始,每章的作业请独立完成;卡壳先查官方文档和报错原文,再问 AI——并且要求 AI 解释原因,不要只要答案。
做游戏是个手艺,和写小说、弹琴一样,量到了才质变。去把你的第一个游戏做完。
——教程一完——
《Godot C# 零基础》系列导航
⬅️ 上一篇:Godot C# 零基础教程 08:音效、粒子、屏幕震动与调试 📑 返回系列总目录(第 01 篇) ➡️ 下一篇:为 Godot 学 C# 01:变量与类型
Godot C# 零基础教程 09:导出发布与学习路线图
https://021028.xyz/posts/default/169/