はかせのラボ

私の頭の中を書いていく雑記ブログです

Unity UnityWebRequest使ってみた

あいさつ

どうも、はかせです。
最近ちょっとC++お休みしてUnityの再入門をしています。
理由は学校の卒業研究その他で使う予定があり、
そんな中で約1年ほどUnityから離れていたためやっていたことが
忘却の彼方に行ってしまったからです。

今回はUnityでネットワーク通信を行ってみました。

UnityWebRequest

Unityで通信を行う際に使うものです。
詳細は下記をどうぞ
docs.unity3d.com

とりあえずほとんど最小構成に近い使い方です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class WebTest : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        StartCoroutine(CallGetWebRequest("https://yahoo.co.jp"));
    }

    private IEnumerator CallGetWebRequest(string inURL)
    {
        //ウェブリクエストを生成
        var request = UnityEngine.Networking.UnityWebRequest.Get(inURL);
        //通信待ち
        yield return request.SendWebRequest();
        //エラーが発生したか
        if (request.isHttpError || request.isNetworkError)
        {
            //エラー内容
            print(request.error);
        }
        else
        {
            //結果
            print(request.downloadHandler.text);
        }
    }
}

色々ネット上の記事など見てきましたが
基本はコルーチンでラップして使うようです。
使い方としては
・WebRequestを生成
・WebRequestの通信待機
・結果によって処理を行う

この三つです。

結果はdownloadHandlerの中に格納されており
その中のプロパティからstringとかを取得して
良しなに処理していかなければならないようです。
(xmljsonならUnity側で何かあってもよさそうですがね)

それでは実行結果です。
f:id:hakase0274:20190729220139p:plain

無事yahooのサイトデータが取れています。
これが本当にあっているのかどうかは実際にyahooのページに行って
F12を押すことで確認できます。
f:id:hakase0274:20190729220350p:plain

おそらく取得に成功していると思います。

あとがき

今回はUnityでの通信でした。

Unityでの通信は結構厳しい面があったりして
Unityが用意しているor許可している通信以外の処理が
Unity内で走ろうとしたら有無を言わさず叩き落してきます。

なのでUnityが用意しているUnityWebRequestを使うと
平和になれます。

基本となるGetとPostはサポートしてくれているので
大体はどうにかなると思います。

それでは今回はこの辺でノシ