2017-02-05 49 views
0

我想用LitJson從Json文件讀取數據並在Unity中構建網格。 Json數據的一部分是多邊形,採用二維陣列的形式(如:u'polygon0': [[2, 18.2], [6, 18], [4, 20]],u'polygon1': [[10, 18], [15, 18], [12, 15]],u'polygon2': [[4.746822657198926, 14.948995797109236],[4.500912085144255, 10.506835760070645],[15.500912085144254,10.506835760070645],[16.6, 15.3]])。閱讀Json在Unity中構建網格

現在我能夠從一個特定的JSON文件中讀取:

//read rectangular 
    for (int k = 0; k < 4; k++) 
    { 
     pol4 npol = new pol4();//pol4 is float(4,2) 
     for (int i = 0; i < 4; i++) 
     { 
      for (int j = 0; j < 2; j++) 
      { 
       npol.pol[i, j] = float.Parse(data[10 + k][i][j].ToString());//data is LitJson.JsonData type 

      } 
     } 
     it.pol4s.Add(npol); 

    } 

不過我想讀的任何數量的任何邊的多邊形。所以我定義的列表來存儲這些:public List<float[,]> polygons =new List<float[,]>();和嘗試讀取它們作爲2-d陣列的列表:

int polyIndex = 0; 
    while (true){ 
     string index = polyIndex.ToString(); 
     string key = "polygon" + index; 
     polyIndex++; 
     try 
     {    
      Debug.Log(data[key]);//data is LitJson.JsonData type 
     } 
     catch (Exception e) 
     { 
      Console.WriteLine("{0} Exception caught.", e); 
      break; 
     } 
     JsonData poly =data[key]; 
     int polySize = poly.Count; 
     float[,] po = new float[polySize, 2]; 

     for (int i = 0; i < polySize; i++) 
     { 
      po[i,0] = float.Parse(poly[i][0].ToString); 
      po [i, 1] = float.Parse(poly [i] [1].ToString); 
     } 
     it.polygons.Add (po);  
    } 

而且我得到以下錯誤:「float.Parse的最佳重載的方法匹配(串)「有一些無效的論點; 完整的錯誤:error message

我不知道如何得到這個座標存儲。

回答

0

替換

 po[i,0] = float.Parse(poly[i][0].ToString); 
     po [i, 1] = float.Parse(poly [i] [1].ToString); 

 po[i,0] = float.Parse(poly[i][0].ToString()); 
     po [i, 1] = float.Parse(poly [i] [1].ToString()); 

即調用ToString方法。

+0

非常感謝!它現在有效。我對C#和團結是陌生的,這個問題似乎在大聲笑之前已經被問過許多次了 –