はなちるのマイノート

Unityをメインとした技術ブログ。自分らしくまったりやっていきたいと思いますー!

【Unity】セリフなどのデータをGistを使って簡単にWebサーバー上におき、読み込む方法

はじめに

今回はセリフなどのデータをGistを使って簡単にWebサーバー上におき、読み込む方法についてに記事になります!

前回はJsonの作り方からmyjsonというサービスを使ってWebサーバーからJsonを取得するところまでをやりました。

www.hanachiru-blog.com

www.hanachiru-blog.com

ただmyjsonを実際のアプリ等で使うのはややマズイのかもしれません。

なので、今回はGistというGithubの機能の一つを用いてこれを実現したいと思います

GistにJsonを置く

まずはこちらからGithubにログインしちゃいましょう。

gist.github.com

f:id:hanaaaaaachiru:20190425113354p:plain

こちらの画面が出れば大丈夫です。

そうしたら、下の画像を参考にしながら概要・ファイル名・ソースコードを記入をし、Create sercret gistをクリックして保存をしましょう。

また、非公開といってもURLが分かればだれでも閲覧が可能みたいです。

f:id:hanaaaaaachiru:20190425114345p:plain

URLを取得する

gistの作成が完了して画面が遷移すると、右上にRawというボタンがあるはずです。こちらをクリックすることでUnity側で使うURLを入手することができます。

f:id:hanaaaaaachiru:20190425114708p:plain

例) https://gist.githubusercontent.com/ユーザー名/--------/raw/--------/sample.json

Unity側でURLを指定する

前回で作成したコードのURLの部分を変更してみましょう。

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://gist.githubusercontent.com/username/---/raw/---/sample.json";

    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;

            }

            Debug.Log(www.text);

            //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);
            }

        }

    }
}

f:id:hanaaaaaachiru:20190425115148p:plain

さいごに

これでGistを使ってWebサーバー上からデータを取得することができました。
この方法なら実際のアプリでも使えるのではないかと思います。

ただ「これじゃダメ!」といった所がもしあれば、是非コメント等で教えていただけると嬉しいです!