我正在Unity中编写一个按类别进行问答的游戏。类别是通过返回JSON文本的PHP脚本获得的,* 当我在UnityEditor中使用此解决方案时,它可以正常工作,但当我在移动终端上安装.apk时,反序列化不起作用 *。
到mysql数据库和PHP脚本的连接工作正常,因为在我登录之前,它工作正常
string json = [
{ "id_cat":"1",
"nombre_cat":"DAM",
"id_cat_padre":"0"
},
{ "id_cat":"4",
"nombre_cat":"ASIR",
"id_cat_padre":"0"
},
{ "id_cat":"5",
"nombre_cat":"DAW",
"id_cat_padre":"0"
}
]
字符串
然后我将这个字符串转换为类别列表
lsSubCategorias = JsonConvert.DeserializeObject<List<Categoria>>(json, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore });
型
我在代码中添加了跟踪,它就在这一行停止。
我使用NuGet安装了Newtonsoft.json,它出现在参考文献中。
我也只处理了一个类别对象而不是一个列表,但它也不起作用。而且这不是一个可视化问题,因为我已经创建了类别对象,并用它们创建了按钮。
- 问题是它在Unity编辑器中工作,但在我的Android设备上不工作 *
我的移动的有以下错误:
类型错误:System.PlatformNotSupportedException ToString错误():Error.ToString()
3条答案
按热度按时间s6fujrry1#
我使用NuGet安装了Newtonsoft.json,它出现在参考文献中。
Unity3d il2cpp目标(如移动的设备)不支持NuGet中的Newtonsoft.json。使用资产存储中的Newtonsoft.json fork,如this one。
wtlkbnrh2#
正如@DoctorPangloss所回答的那样,Newtonsoft.Json在使用IL 2CPP脚本后端进行构建时遇到了麻烦。这是由于Newtonsoft.json没有任何完全支持AOT的构建版本可用。
有很多第三方解决方案提供了支持AOT的Newtonsoft.json。ParentElement的链接JSON .NET是一个很好的解决方案,但是该项目已经死了几年了,并且只给Newtonsoft.JSON提供了8.0.3版本。
我建议查看我的存储库,将Newtonsoft.Json交付到版本12.0.3(在撰写本文时),并通过内置的Unity Package Manager交付:https://github.com/jilleJr/Newtonsoft.Json-for-Unity#readme
要了解更多信息,请阅读我在Newtonsoft.JSON上下文中关于What even is AOT?的文章。
knsnq2tg3#
Unity 2021.3.27f1和Newtonsoft JSON 3.2.1仍然存在相同的问题
我解决了在 * 播放器设置/其他设置/优化 * 中将托管剥离级别设置为最小的问题。