UnityでMiniJSONを使ってみる

ayumegu(プログラマー)
よろしくお願いします。

こんにちはあゆめぐです。

今回はWWWの通信まわりを軽くやってみます。
サーバー側はphpでシンプルなJSONデータ返す形でやってみます

サーバーソース(php)

サーバー側はphpでいきます。
user_idを渡すとユーザーデータのjsonがかえってくるイメージで。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
if(isset($_REQUEST['user_id'])){
  $data = array(
          'status'      => 'ok',         // ステータス
          'name'        => 'あゆめぐ',       // ニックネーム
          'lv'          => 1,                // LV
          'hp'          => 10,           // HP
          'max_hp'      => 10,           // 最大HP
          'now_exp'     => 0,                // 現在の経験値
          'next_exp'    => 10,           // 次のレベルまでの経験値
          'money'       => 0,                // お金
          );
  $json = json_encode($data);
  print $json;
}else{
  $data = array(
      'status'  => 'ng',
      'msg'     => 'エラー'
  );
  $json = json_encode($data);
  print $json;
}

user_idを渡した場合

渡さない場合

サーバーにあげて直接urlをたたいたところ

Unity側の実装

unityでjsonを扱うのに今回はMiniJSONを使用します
ダウンロードはこちら
ほかのJsonライブラリなどはこちらがわかりやすいです


このMiniJSON.csをUnityにインポート。
利用の際には
using MiniJSON;
を忘れずに!

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
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using MiniJSON;

public class TestWww : MonoBehaviour {

  public readonly string baseUrl = "サーバーパス";
  public readonly string getUserDataAPI = "phpファイル名";
  private int user_id = 1;

  void Start() {
      StartCoroutine("GetUserData");
  }

  IEnumerator GetUserData(){
      string url = baseUrl + getUserDataAPI + "?user_id=" + user_id;
      
      WWW www = new WWW(url);
      yield return www;
      
      //JSONテキストのデコード
      Dictionary<string,object> jsonData = MiniJSON.Json.Deserialize(www.text) as Dictionary<string,object>;
      
      //データの取得 
      string name = (string)jsonData["name"];
      Debug.Log (name);
  }
  
}


はいname取得できました〜

今回の感想

せっかくunityProかったので次はAssetBundleまわりやってみようかなと思います。