はじめに
今回はUnityでJsonをWebサーバーから読み取ることについての記事になります!
前回はJson
の使い方からローカルに保存したJson
を読み込みをしました。
一応前回の続きという流れでいきたいと思います。
利点
なぜローカルに保存せずにWebサーバからJson
を取得するのでしょうか。
私が思う利点はこの2つだと思います。
・アプリ(ゲーム)のアップデートをしなくても中身を更新できる
・アプリ(ゲーム)の容量を減らせる
ただネット環境が必要になるといったデメリットもあります。
myjsonという無料サービス
ただ私はWebサーバー関連の知識は全くありません。
たぶん実際のアプリではマズイのかもしれませんが、json
を返してくれる無料のWebサービス”myjson”を使うことで簡単に実現できます。
今回は練習ということで、こちらを利用させていただこうと思います。
myjsonにJsonを置く
実際にこちらのサービスを利用していきたいと思います。
前回利用したJson
を今回も使っていきましょう。
{ "userInfos" : [ { "id" : 1, "name" : "hanachiru", "tel" : { "homePhone" : "XXX-XXX-XXX", "mobilePhone" : "YYY-YYY-YYY"} }, { "id" : 2, "name" : "Mr.X", "tel" : { "homePhone" : "XXX-XXX-XXX", "mobilePhone" : "YYY-YYY-YYY"} }, { "id" : 3, "name" : "Ms.Y", "tel" : { "homePhone" : "XXX-XXX-XXX", "mobilePhone" : "YYY-YYY-YYY"} } ] }
Unityのコードを少し変更する
前回のコードを少し変えちゃいましょう。
using UnityEngine; using System.Collections; using System.Collections.Generic; [System.Serializable] public class JsonData { public UserInfo[] userInfos; } [System.Serializable] public class UserInfo { public int id; public string name; public TelephoneNumber tel; } [System.Serializable] public class TelephoneNumber { public string homePhone; public string mobilePhone; } public class JsonReader : MonoBehaviour { private string path = "https://------------------------"; IEnumerator Start() { // サーバからJSON取得 using (WWW www = new WWW(path)) { //Jsonを取得するまで待機 yield return www; //エラーの場合 if (!string.IsNullOrEmpty(www.error)) { Debug.LogError("www Error:" + www.error); yield break; } //JsonData型のインスタンスを作成 JsonData jsonData = new JsonData(); //jsonのデータをjsonDataに格納 JsonUtility.FromJsonOverwrite(www.text, jsonData); //出力 foreach (var item in jsonData.userInfos) { Debug.Log("id: " + item.id); Debug.Log("name: " + item.name); Debug.Log("homePhone: " + item.tel.homePhone); Debug.Log("mobilePhone: " + item.tel.mobilePhone); } } } }
さいごに
あまりにWebサーバーに関する知識がなく、かなり苦戦してしましました。
最初はDropboxの無料粋でも同様なことができると思っていたのですが、どうやら無理?っぽいみたいでかなり時間がかかってしまいました。
データをWeb上で管理はなかなかに一筋縄ではいかないみたいです。