Go to file
2025-04-08 01:34:25 +08:00
Assets/AxiProjectTools 稳定初版 2025-04-08 01:30:10 +08:00
.gitignore 稳定初版 2025-04-08 01:30:10 +08:00
README.md readme 2025-04-08 01:34:25 +08:00

*本文仅作技术研究因为合规原因本文不提供任何法律敏感和版权相关的诸如SDK的文件。


前言和声明

Unity Switch 开发打包移植相关的一系列教程by 皓月狩魂(sin365) axibug.com 初版分享:

声明: *文章和开源代码仓库仅作技术研究因为合规原因不包含也提供任何法律敏感和版权相关的诸如SDK的文件。 *请自行获取,建议您使用官方授权的开发套件。 *谢绝讨论任何技术外的诸如NS移植游戏开发的性质等无意义问题我只是技术爱好者。相互尊重相互学习。

文章:

1.Unity Switch 开发/打包/移植教程包含如何重新Repack NSP,让捣鼓后的零售机运行) http://note.axibug.com/blog/post/akiragatsu/UnitySwitchDev

2.Unity下Switch开发文件存储踩坑以及解决方案范例 Unity Switch下不能用System.IO,只能用nn.fs http://note.axibug.com/blog/post/akiragatsu/UnitySwitchDevForIO

3.Switch系统错误码方便排查问题 我AxiNSApi中也提供了转换打印方便排查 http://note.axibug.com/blog/post/akiragatsu/SwitchErrCode

4.Switch TitleID规则 http://note.axibug.com/blog/post/akiragatsu/SwitchTitleID

工具仓库:

  1. AxibugNSPTools Unity用自动化打包工具自动完成NSP打包并Repack https://github.com/sin365/AxibugNSPTools

  2. AxiNSApi 已经封装好的Unity下Switch的用户访问存储挂载读写API直接可用 https://github.com/sin365/AxiNSApi

再次申明,以上文章和仓库,不提供不包含任何敏感和版权文件,和授权开发者一样,仅讨论和演示上层使用经验交流。

祝君愉快我爱Switch

—— 皓月 2025.4.8


具体说明

1. Nintendo SDK

这个我不会提供任何文件,或者建议您使用任天堂官方授权的开发套件(笑)

准备好Nintendo SDK之后配置如下环境变量

NINTENDO_SDK_ROOT -> 你的路径\NintendoSDK

NINTENDO_SDK_NEX_ROOT -> 你的路径\NintendoSDK-NEX

NINTENDO_SDK_NPLN_ROOT -> 你的路径\NintendoSDK-NPLN

NINTENDO_SDK_PIA_ROOT -> 你的路径\NintendoSDK-Pia6

安装dotnet SDK

因为Nintendo SDK依赖donetsdk的在Nintendo Sdk中也直接包含dotnet sdk的安装文件是doNet6).您也可以自行安装

这个建议一定要安装缺少这个也是Unity打包异常的原因之一否则你难以查找原因。

Unity Switch Support

同样,这个我不会提供任何文件,或者建议您使用任天堂官方授权的开发套件

准备和SDK对应版本的Unity Switch Support

安装Unity-AAAA版本

安装UnitySetup-Nintendo-Switch-Support-for-Editor-AAAA-SDK-BBBB-xxxxxxx.exe

占位符:

AAAA是Unity版本号

BBBB是Nintendo SDK版本号

关于Unity License

Nintendo Switch 并不需要特殊License或Unity Pro License有一个License 就行

Unity 开发过程

这个就和其他常见Unity游戏开发方式忽略……

有一些平台差异的踩坑类似正常的PCIOSAndroid的unity开发过程中一样不同平台开发有一些特定的平台兼容问题或必须的差异做法。Switch也一样有一些不同的兼容情况需要处理后续踩坑会详细讲述。但这个是游戏本身内容开发方面的本文不在此赘述。

打包到Switch

因为Unity是针对官方授权开发而来NSP是提交给Nintendo由Nintendo审核签名后分发才会是一个完整带NCA头文件信息的可安装NSP。

并不是Android那样输出.apk就万事大吉。

你大概率是没有Nintendo官方授权的开发套件的按照官方套件你打包出来的程序只能在官方提供的开发机和测试机上运行零售机是无法运行的。

要安装到零售机切是已经折腾过的零售机Hacked

而且先决条件是你提供的NSP是没有NCA签名等基本信息的解决这个之后才有安装的可能。

不解决的话通过MTP之类的安装方式都会报错无法安装

Invalid NCA Magic

正片开始

在此之前请你先确保你Unity开发环境能够选择Switch平台成功Build出文件。

勾选 Create NSP File 是输入.nsp文件

不勾选 则是输出的文件夹形式的你的程序文件

若Unity并不能选择Switch平台请检查你的Switch Support是否准备好并安装

若打包的时候并不能找到SDK请检查你的Nintendo SDK是否准备好并配置好环境变量。

若IL2CPP问题请按照Nintendo SDK解决。

还有先解决基本问题比如你的代码在Build上不要报错或者Switch的一些宏之类的。

能输出文件,好,现在才可以往下看。

打包使其让零售机(已折腾的)可以安装和运行

前置1.提取固件Key

这是敏感操作,本文只是表示我自己的操作,对于操作的影响,本文不负任何责任。

你需要提取你SysNADA的key这个固件密钥是构建NCA等信息的关键。

请不要在网络上寻找key即便找到也是不可用的。

请自行提取。

下载 lockpick_rcm.bin复制到TF卡\bootloader\payloads (如果你的折腾机已经整合,可以不下载)

hekate界面选择PayLoad有些中文汉化了叫有效载荷

PayLoad中选择lockpick_rcm

进入lockpick_rcm之后音量加减按钮是菜单上下选择电源键是确定。

我们选择 Dump from SysNADA很快会将你的key保存到SDK上。

退出Lockpick

在SDK中会有这三个文件将他拷贝到你的电脑上。

sd:/switch/prod.keys

sd:/switch/title.keys

sd:/switch/dev.keys

你可以使用它因为你合法拥有你的switch设备但请仅自己提取使用不要再网上分享或传播你的文件。避免一些法律风险和避免您的设备敏感信息被泄露。

前置2.确定一个titleid

自己定一个titleid确保和现有所有已发行的游戏或者自制游戏的TitleID不一样

可以去GBAtemp之类的论坛查重。

并在Unity PlayerSetting中设置TitleID

使用 AxibugNSPTools 重新打包NSP

  • 这工具由我提供工具内不提供也不包含任何Nintendo SDK版权相关的任何内容。只是当你合法拥有Nintendo SDK时本工具全自动化帮你调用
  • 即本工具调用和操作的任何文件,都是您提供的合法文件,本工具不包含。给合法授权的开发者使用的。请遵守相关规定。

本工具自动化调用您提供的合法Nintendo SDK获取包的详细信息并基于您提供的合法prod.keys生成NAC帮助您调用hacpack最终repack一个新的NSP使其可以在已经被折腾的Switch上成功安装NSP文件。

  • 拷贝keys

AxibugNSPTools 是编写给Unity的工具插件AxibugNSPTools到您的项目目录.

将您合法提取的prod.keys、title.keys、dev.keys拷贝到Assets/AxiProjectTools/AxiNSPack/switch_keys目录中。 (注您的项目若有提交git等公开仓库时请忽略Assets/AxiProjectTools/AxiNSPack/switch_keys/*.keys , 以免泄露由您设备提取的key

*若没有prod.keys,程序repack时会提示您。

  • 确保先前配置的Nintendo_SDK_ROOT环境变量

*若没有Nintendo_SDK_ROOT环境变量,程序repack时会提示您。

功能1. RepackNSP(仅重新构建NPS

这个是把现有的Unity 输出的NSP且无其他任何修改重新构建使其repack一个新的NSP折腾后的零售Switch可以直接安装。

Unity Editor菜单上选择Axibug移植工具/Switch/AxibugNSPTools/RepackNSP(仅重新构建NPS

等待执行完毕

通过MTP等方式安装到Switch测试

功能2. Build With RepackNSP(打包NSP并重新构建NPS

这个是自动调用Unity Build一个NSP之后再自动调用RepackNSP重新构建使其repack一个新的NSP折腾后的零售Switch可以直接安装。

Unity Editor菜单上选择Axibug移植工具/Switch/AxibugNSPTools/Build With RepackNSP(打包NSP并重新构建NPS

等待执行完毕

通过MTP等方式安装到Switch测试