# AxiNSApi 为 Unity Switch 封装的 便于调用SDK的库 *本仓库作技术研究,因为合规原因,本文不提供任何法律敏感和版权相关的诸如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 ------------ ## 具体说明 本仓库已经封装好,包括用户选择读取,存储节点挂载,和读写。 做了安装封装,NS这东西,在Unity下,使用稍有不当,即会崩溃。 本文主要探讨Unity下的Nintendo Switch平台 存档或存储相关, 有朋友就问了,Unity开发的文件存储,不就是Syatem.IO 下直接操作么?并非如此,他就是不一样,可以说是**传统方式完全不可用** ~ **我先介绍,再告诉你代码怎么写,安心先看** 我们先来看看在Switch平台下的,情况: Application.persistentDataPath 不可用 调用就崩溃,也不用在任何地方动态或静态初始化 Application.DataPath 可用 输出 rom:/Data Application.streamingAssetsPath 可用 输出 rom:/Data/StreamingAssets Application.temporaryCachePath 可用 输出 host:/Temp 像Application.DataPath,Application.streamingAssetsPath这种只读的路径,也不能通过System.IO去访问,调用就会卡死掉。 而要存储,如Application.persistentDataPath 在Switch下是直接不可用的,类似我PSVita文章讲到的,但比PSVita更严格,甚至不能取值。 存档模式,需要在ProjectSettings中或者NMeta中将存档大小设置一下,默认为0,否则无法保存文件(实测,如果不设置,你只能存几十字节的东西,超过就崩溃,一定要设置) 而设置呢,**要设置 SaveDataSize和SaveDataJournalSize,后者一定要不小于前者,且都是16KiB的倍数,不是16KiB的倍数,你会打包失败** ## How To Use //Init请第一时间调用,否则NS文件相关的读写,未初始化,直接使用直接崩溃。 AxiNS.instance.Init(); AxiNSErrCode.cs 中是对Switch的系统各种错误码的打印类,便于调试。 AxiNSMount.cs 中是存储节点挂载,调用AxiNS.instance.Init()时,存档模式 save:/已经挂载 AxiNSIO.cs 封装各种文件读写 其他请查看我的文章,感谢~~