从JS for Unity序列化对象数组的JSON数据时出现问题



我试图在WebGL项目中将数据从JS发送到Unity中的C#,但我对javascript和JSON不太熟悉。

在JS代码中,我使用Json.Stringify序列化JS中的一个对象数组,并将其作为字符串发送到Unity。这就是团结的结果。。。

[
[],[],[],[],
[
{
"damage": 0,
"opaque": false,
"safe": false
}
],
[
{
"damage": 0,
"opaque": false,
"safe": false
}
]
]

我没有写js代码,所以我不确定该发布什么。如果我的Unity代码看起来还可以,我会试着看看我可以从js中分享什么。

我不知道为什么上面有空括号。我想知道团结是否在努力以序列化那些空集。

我在Unity中为传入的对象创建了两个Serializable类。

[System.Serializable]
public class minimap
{
public int damage;
public bool opaque;
public bool safe;
}
[System.Serializable]
public class minimaps
{
public minimap[] minimapArray;
}

在一个gameObject上,我放置了一个从JS调用的脚本。";Json转换完成";有效,但minimap循环无效。数组中似乎有一些东西,但不是我所希望的,除非我没有正确访问它。

public class GameController : MonoBehaviour
{
public JsonDeserialize(string minimap)
{
minimaps minimaps = JsonUtility.FromJson<minimaps>(minimap);
if(minimaps != null) _debugText.text += "JSON convert completed";
foreach (minimap mm in minimaps.minimapArray)
{
_debugText.text += "Damage: " + mm.damage + "opaque: " + mm.opaque;
}
}
}

感谢您的阅读和任何帮助!

尝试这个

if(!string.IsNullOrEmpty(minimap)
{
minimap[][] minimaps = JsonUtility.FromJson<minimaps[][]>(minimap);
if(minimaps!=null)
{
foreach (var mms in minimaps)
{
if(mms==null) _debugText.text ="Error: mms is null";
else
foreach (minimap mm in mms)
_debugText.text += "Damage: " + mm.damage + "opaque: " + mm.opaque;
}
}
} else _debugText.text ="Error: minimaps is null";
} else _debugText.text ="Error: minimap is an empty string";

但我强烈建议你去谷歌和istall Newtonsoft.Json搜索Unity3d

using Newtonsoft.Json;
minimap[][] minimaps = JsonConvert.DeserializeObject<minimaps[][]>(minimap);

最新更新