diff --git a/README.md b/README.md index 24b1aa8..49fbe68 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,89 @@ # AxiNSApi -为 Unity Switch 封装的 便于调用SDK的库 \ No newline at end of file +为 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 封装各种文件读写 + +其他请查看我的文章,感谢~~ \ No newline at end of file