Assets | ||
LICENSE | ||
README.md |
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
工具仓库:
-
AxibugNSPTools Unity用自动化打包工具(自动完成NSP打包并Repack) https://github.com/sin365/AxibugNSPTools
-
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 封装各种文件读写
其他请查看我的文章,感谢~~