【Unity】 LitJsonを使用してResource以下のJsonファイルをパースする

raharu(仮名)(プログラマー)
これがダイバージェンス1%の先の世界か。。。

どうもこんにちわ、
最近Unityを触る機会が増えて楽しい日々を過ごしています。

Cocos2dxちゃんはちょっと休憩、また3.3Finalくらいのバージョンが出てきたらやろうかと思います。

もう何番煎じの話題か分かりませんが、備忘録として残しておきます。

LitJson入れる

(http://neareal.net/index.php?ComputerGraphics%2FUnity%2FTips%2FJSON%2FLitJSON) 参考にさせて頂きました。

※Jsonファイルは面倒なのでエクセルで作成して

(http://shancarter.github.io/mr-data-converter/)で変換しています

test.json

1
2
3
[{"id":1,"name":"ボス1","hp":100000,"attack":300},
{"id":2,"name":"ボス2","hp":200000,"attack":4500},
{"id":3,"name":"ボス3","hp":3333333,"attack":6000}]

このような適当な物を作成します

その後このjsonファイルを.txtに拡張子変更します。

これをUnityに入れます今回はResources/Json/test.txtとして入れました

test_scene.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using LitJson;

public class Test_Scene : MonoBehaviour {

    public List<DecodeData> dataList = new List<DecodeData>();

    public class DecodeData
    {
        public int id;
        public string name;
        public int hp;
        public int attack;
    }


    // Use this for initialization
    void Start () {

        //  MasterJsonLoad
        TextAsset mapText = Instantiate(Resources.Load("Json/test")) as TextAsset;

        // ListAdd
        DecodeData[] json_data = JsonMapper.ToObject<DecodeData[]> (mapText.text);
        dataList.AddRange (json_data);

        foreach (DecodeData list in dataList) {
            Debug.Log(list.name);
        }

    }

    // Update is called once per frame
    void Update () {

    }
}

f:id:raharu0425:20140909110812p:plain