2015-07-10 4 views
1

Извините за мой английский :)Unity SimpleJSON array lags

В моем проекте я использую SimpleJSON. У меня есть эта строка json Это список планет в моей игре. Мне нужно разобрать этот json. Но у меня есть 1 проблема. Мой редактор Unity свободен! Когда я использую цикл.

{ 
"system_list": 
    [ 
    { 
    "system_id":"9", 
    "galaxy":"1", 
    "x":"3", 
    "y":"2", 
    "system_name":"bla bla" 
    }, 
    { 
    "system_id":"10" 
    "galaxy":"1", 
    "x":"1", 
    "y":"4", 
    "system_name":"NoIQ"} 
    ] 
} 

Синтаксический код этого:

using UnityEngine; 
using System.Collections; 
using System.Collections.Generic; 
using SimpleJSON; 

public class GetJsonList : MonoBehaviour 
{ 
    string str_json = "{\"system_list\":[{\"system_id\":\"9\",\"galaxy\":\"1\",\"x\":\"3\",\"y\":\"2\",\"system_name\":\"bla bla\"},{\"system_id\":\"10\",\"galaxy\":\"1\",\"x\":\"1\",\"y\":\"4\",\"system_name\":\"NoIQ\"}]}"; 
    JSONNode N; 
    JSONArray arr; 

    List<SystemPlanet> sysPlanet = new List<SystemPlanet>(); 
    void Start() 
    { 
     N = JSON.Parse(str_json); 
     arr = N["system_list"].AsArray; 

     Debug.Log(arr[0]["system_id"].AsInt); 
     Debug.Log(arr[1]["system_id"].AsInt); 

     for (int i = 0; i <= arr.Count; i++) 
     { 
      sysPlanet.Add(new SystemPlanet(arr[i]["system_id"].AsInt, arr[i]["galaxy"].AsInt, arr[i]["x"].AsInt, 
       arr[i]["y"].AsInt, arr[i]["system_name"].Value)); 
     } 

     Debug.Log(sysPlanet[1].sys_name); 
    } 
} 

public class SystemPlanet 
{ 
    public int sys_id; 
    public int galaxy; 
    public int x; 
    public int y; 
    public string sys_name; 

    public SystemPlanet(int _sys_id,int _galaxy, int _x, int _y, string _sys_name) 
    { 
     sys_id = _sys_id; 
     galaxy = _galaxy; 
     x = _x; 
     y = _y; 
     sys_name = _sys_name; 
    } 
} 

Если я использовать этот Debug.Log(arr[0]["system_id"].AsInt);
или это Debug.Log(arr[1]["system_id"].AsInt);
работы тонкой.
Но если я использую цикл - это:

for (int i = 0; i <= arr.Count; i++) 
{ 
sysPlanet.Add(new SystemPlanet(arr[i]["system_id"].AsInt, arr[i]["galaxy"].AsInt, arr[i]["x"].AsInt, arr[i]["y"].AsInt, arr[i]["system_name"].Value)); 
} 


или этот цикл:

for (int i = 0; i <= arr.Count; i++) 
{ 
Debug.Log("System ID: "+arr[i]["system_id"].AsInt +"\nGalaxy:"+ arr[i]["galaxy"].AsInt+"\n X: " + arr[i]["x"].AsInt +"\n Y: "+ arr[i]["y"].AsInt +"\nSystem Name: "+ arr[i]["system_name"].Value); 
} 


My Unity Editor сублимационной !!! Зачем ?

ответ

1

Я понял:
я использовал:
for (int i = 0; i <= arr.Count; i++)
когда arr.Count == 2
нужно использовать это: for (int i = 0; i < arr.Count; i++)
заменить <= на <
работы штрафа.