2017-04-18 12 views
1

現在、テキストファイルにn x mフィールド配列をjsonとして保存しようとしています。 私はunityが最上位のJSON逆シリアル化の配列型をサポートしていないことを知っています。したがって、私は、ゲームオブジェクトの配列をJSONファイルに保存されている天気をこのUnity json apiの問題

public class Field{ 
    public int[][] id; 
    public GameObject[][] gameObjectReference; 
} 

のように見える関連していないクラスを作ったが、私はまだID配列を保存したいと思います。これまで私はこのコードスニペットを使ってこれをテストしています。

String[] aRows = System.IO.File.ReadAllLines(pathToSomeFile);  
field = new Field(); 

    field.id = new int[aRows [0].Split(';').Length][]; 


    for (int i = 0; i < aRows [0].Split(';').Length; i++) { 
     field.id [i] = new int[aRows.Length]; 
    } 

    for (int y = 0; y < aRows.Length; y++) { 
     for (int x = 0; x < aRows[y].Split(';').Length; x++) { 
      field.id [x] [y] = int.Parse(aRows[y].Split(';')[x]); 
     } 
    } 

    GameManager.log (JsonUtility.ToJson (field)); 

しかし、コンソールは、ちょうど言う:

{} 

ファイルイムcurretnly私のアプローチと間違って何この

5;5;5;5;5;5;5;5;5 
5;5;5;5;5;5;5;5;5 
5;5;5;5;5;5;5;5;5 
5;5;5;5;5;5;5;5;5 
5;5;5;5;5;5;5;5;5 
5;5;5;5;5;5;5;5;5 

のように見える何かを使用していますか? plsヘルプ!私はそれを把握できません。 documentationから

答えて

1

内部的には、この方法では、ユニティ・シリアライザを使用しています。そのため、渡した オブジェクトはシリアライザでサポートされている必要があります。 MonoBehaviour、ScriptableObject、または Serializable属性が適用されたプレーンクラス/構造体である必要があります。 に含めるフィールドの種類はシリアライザでサポートされている必要があります。サポートされていないフィールド は、非公開フィールド、静的フィールド、およびNonSerialized属性が適用されたフィールド と同様に無視されます。

それはSerializable属性で提供されたオブジェクト(あなたのケースではFieldオブジェクト)MonoBehaviour、はScriptableObjectまたはプレーンクラス(お使いの場合)のいずれかでなければなりませんを適用することをSAIS。この属性を使用する必要があります。

ので、フィールドに属性を追加します。

[Serializable] 
public class Field{ 
    public int[][] id; 
    public GameObject[][] gameObjectReference; 
} 

のint [] []をシリアル化可能であり、あなたのコードの作業をしなければならない、しかし私はゲームオブジェクトが[] []であるとは思わない、と私は」現時点でどのように回避できるかわからないので無視してください。とにかく最初にタグを使ってコードを試してみて、それが動作すれば教えてください。

関連する問題