Star☆Unityメモ

Unityのちょっとしたことをメモって後で見返せれたらいいなサイト

MYSQLとUNITY間のやり取り

概要

以前作ったCSVファイルでエネミーのパラメーターを変更してみる

zvn-x.hatenablog.com

次にCSVファイルをMYSQLにぶち込む

zvn-x.hatenablog.com

こう来ると次は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の場合、デシリアライズが出来ない仕様だったので下記のサイトを参考に開発しました。

blog.cluster.mu