This commit is contained in:
sin365 2025-04-08 01:48:04 +08:00
parent ebdc044978
commit 4bc6aa9f11

View File

@ -1,3 +1,89 @@
# AxiNSApi
为 Unity Switch 封装的 便于调用SDK的库
为 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.DataPathApplication.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 封装各种文件读写
其他请查看我的文章,感谢~~