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とかを取得して
良しなに処理していかなければならないようです。
(xmlかjsonならUnity側で何かあってもよさそうですがね)
それでは実行結果です。
無事yahooのサイトデータが取れています。
これが本当にあっているのかどうかは実際にyahooのページに行って
F12を押すことで確認できます。
おそらく取得に成功していると思います。
あとがき
今回はUnityでの通信でした。
Unityでの通信は結構厳しい面があったりして
Unityが用意しているor許可している通信以外の処理が
Unity内で走ろうとしたら有無を言わさず叩き落してきます。
なのでUnityが用意しているUnityWebRequestを使うと
平和になれます。
基本となるGetとPostはサポートしてくれているので
大体はどうにかなると思います。
それでは今回はこの辺でノシ