MYSQLとUNITY間のやり取り
概要
以前作ったCSVファイルでエネミーのパラメーターを変更してみる
こう来ると次はUNITYとMYSQLを接続してみたい. 以前作った「CSVファイルでエネミーのパラメーターを変更してみる」のCSV読み込み部分をDBに変えるだけだ。
コード
ReadMonsterData.cs
const string LOCALDOMAIN = ""; string m_url = "http://" + LOCALDOMAIN + "/unity/monsterData_get.php"; Dictionary<string, Dictionary<string, string>> monsterSummarizeData = new Dictionary<string, Dictionary<string, string>>(); void Awake(){ StartCoroutine(GetUser()); } IEnumerator GetUser() { WWW result = new WWW(m_url); yield return result; if (result.error == null) { Debug.Log(result.text); List<MonsterStates> datas = JsonHelper.ListFromJson<MonsterStates>(result.text); foreach(var data in datas){ Dictionary<string, string> monsterStates = new Dictionary<string, string>(); monsterStates.Add("NAME", data.NAME); monsterStates.Add("HP", data.HP); monsterStates.Add("SPEED", data.SPEED); monsterSummarizeData.Add(data.NAME,monsterStates); } var monsterParam = monsterSummarizeData["ELEPHANT"]; Debug.Log(monsterParam["HP"]); Debug.Log(monsterParam["NAME"]); } } public Dictionary<string, string> GetMonsterDate(string name) { var MonsterDic = monsterSummarizeData[name]; return MonsterDic; } }
MonsterBase.cs
public GameObject[] enemy; ReadCSV csv; ReadMonsterData mysql; float timeOut; float timeElapsed; void Awake() { timeOut = 5.0f; mysql = GetComponent<ReadMonsterData>(); } void Update() { timeElapsed += Time.deltaTime; if (timeElapsed >= timeOut) { Debug.Log("huga"); GameObject monster = Instantiate(enemy[0], new Vector3(0.0f, 0.0f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)) as GameObject; monster.GetComponent<Monster>().SetStates(mysql.GetMonsterDate("ELEPHANT")); monster = Instantiate(enemy[1], new Vector3(0.0f, 0.0f, 0.0f), new Quaternion(0.0f, 0.0f, 0.0f, 0.0f)) as GameObject; monster.GetComponent<Monster>().SetStates(mysql.GetMonsterDate("RABBIT")); timeElapsed = 0.0f; } }
参照サイト
jsonUtilityではJsonのルートがArrayの場合、デシリアライズが出来ない仕様だったので下記のサイトを参考に開発しました。