【发布时间】:2021-02-01 08:43:50
【问题描述】:
我正在尝试将我从 JS 应用程序创建的 JSON 文件解析为 C# 中的 Unity。
我一般没有使用 Json 或读取数据的经验,所以我确定我缺少一些基本的东西。
这是数据结构在 JS 中的样子:
function DialIn () {
this.id = null; this.line = "default in line"; this.links = [];
}
function DialOut () {
this.id = null; this.line = "defauLt out line"; this.links = []; this.autoDelete = false;
}
function DialNode () {
this.id = null; this.posX = null; this.posY = null; this.ins = []; this.outs = [];
}
var NodesDB = []; //DataBase of dial nodes
简而言之,NodesDB 是一个 DialNode 数组,每个 DialNode 包含一个 ins 数组和一个 outs 数组。
一旦存储在 JSON 中,它看起来像这样(例如,NodesDB 中有 3 个节点)
[{"id":"dn0","posX":82,"posY":234,"ins":[{"id":"dn0_in_0","line":"This is dynamic Blep ?","links":[]}],"outs":[{"id":"dn0_out_0","line":"Coucou, this is a reply.","links":["dn1_in_0"],"autoDelete":false}]},{"id":"dn1","posX":520,"posY":171,"ins":[{"id":"dn1_in_0","line":"This is dynamic Blep ?","links":["dn0_out_0"]}],"outs":[{"id":"dn1_out_0","line":"Coucou, this is a reply.","links":[],"autoDelete":false},{"id":"dn1_out_1","line":"Coucou, this is a reply.","links":["dn2_in_0"],"autoDelete":false}]},{"id":"dn2","posX":948,"posY":139,"ins":[{"id":"dn2_in_0","line":"This is dynamic Blep ?","links":["dn1_out_1"]}],"outs":[{"id":"dn2_out_0","line":"Coucou, this is a reply.","links":[],"autoDelete":false}]}]
然后,在 Unity 中,我创建了这个结构,试图模仿 JS 中的结构:
[System.Serializable]
class DialIn
{
string id; string line; string[] links;
}
[System.Serializable]
class DialOut
{
string id; string line; string[] links; bool autoDelete;
}
[System.Serializable]
class DialNode
{
string id; int posX, posY; DialIn[] ins; DialOut[] outs;
}
DialNode[] NodesDB;
从那里,我正在使用这些命令:
path = Application.dataPath + "/Jsons/Bloup.json";
jsonData = File.ReadAllText(path);
我相信我应该使用这样的东西:
NodesDB = JsonUtility.FromJson<DialNode>(jsonData);
但显然,事情没那么简单。
任何帮助将不胜感激:o
【问题讨论】:
-
我创建了一个更简单的脚本版本,没有数组数组和所有这些噪音。 FromJson 在这种情况下运行良好。我认为问题在于我的 Json 不包含一个类,而是一个所述类的数组。不过,我还没有找到解决方法。我正在调查这个:answers.unity.com/questions/1123326/…
标签: javascript c# json unity3d