独自クラスを作成します
[System.Serializable]
public class myData {
public int id;
public string name;
public int time;
public float posx;
public float posy;
public float posz;
}
1行目が単にSerializableとなっているものがあるが,Systemをつけると動く
次にこれをDictionaryにインデックス番号(左=key),JSON文字列(右=value)のセットで保存します
この場合のインデックス番号はおそらくインクリメントさせて順序よく再生させた方が無難
登録&呼び出しはこちら.今回はテストなのでインデックス番号がオブジェクト番号になっているので,これでは目標のことができない
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;//必ず必要
public class dicPractice : MonoBehaviour {
public GameObject ballPre;
public InputField numInput;
Dictionary<int, string> timeList2;
void Start () {
timeList2 = new Dictionary<int, string> ();
//json test
myData jdata = new myData();
//キャラn体作成
for (int i = 0; i < 10; i++) {
GameObject go = Instantiate (ballPre, new Vector3 (i * 2.0f, 0, 0), Quaternion.identity) as GameObject;
string myAIname = "AI" + i.ToString ();
go.name = myAIname;
//json
jdata.id = i;
jdata.name = myAIname;
jdata.posx = go.transform.position.x;
jdata.posy = go.transform.position.y;
jdata.posz = go.transform.position.z;
jdata.time = i * 10;//dummy data
string json = JsonUtility.ToJson (jdata);
timeList2.Add (i, json);
}
}
//インデックス番号でJSONを呼び出す
public void numDel(){
int objNum = int.Parse (numInput.text);//入力フィールドの文字をintに変換
var myObject = JsonUtility.FromJson<myData>(timeList2 [objNum]);//ディクショナリのインデックス番号で呼び出したValueをJSON文字列からオブジェクトに変換
Debug.Log ("X=" + myObject.posx);//オブジェクト内のposxをコンソールに出力以下同じパタン
Debug.Log ("Y=" + myObject.posy);
Debug.Log ("name=" + myObject.name);
Debug.Log ("time=" + myObject.time);
}
}
keyをシーン番号にするためにはどうすれば,,