Blockchain code Metaverse VR

Unity×VR×Blockchain(204)

スポンサーリンク

//tips

//unityによるweb連結

UnityでLitJSONを使用できなくなっているので対策を考える。

LitJSONは Unityに標準では含まれていないので、GitHubからダウンロードしてくる必要があった。

https://github.com/findix/litjson-unity

DownloadHandlerが受け取ったリクエストに対する応答をJsonMapperで変換。

JsonData jsonData = JsonMapper.ToObject(webRequest.downloadHandler.text);

Debug.Log(jsonData["title"]);
Debug.Log(jsonData["description"]["text"]);
Debug.Log(jsonData["forecasts"][0]["date"]);
Debug.Log(jsonData["forecasts"][0]["telop"]);
Debug.Log(jsonData["forecasts"][0]["temperature"]["max"]["celsius"]);
Debug.Log(jsonData["forecasts"][0]["chanceOfRain"]["18-24"]);
Debug.Log(jsonData["forecasts"][1]["date"]);
Debug.Log(jsonData["forecasts"][1]["telop"]);
Debug.Log(jsonData["forecasts"][1]["temperature"]["max"]["celsius"]);
Debug.Log(jsonData["forecasts"][1]["chanceOfRain"]["18-24"]);
Debug.Log(jsonData["location"]["city"]);

プログラムで利用できる形に分解した天気情報を Debug.Logで表示する。

東京都 東京 の天気
UnityEngine.Debug:Log(Object)
<Get_WeatherInfo>d__1:MoveNext() (at Assets/API_Test03.cs:37)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

・・・

といった形で読み込みデータを分解して読み出すことができるようになった。

次は天気予報ではないもので実行してみる。

先の天気予報のものを参考にrequest.downloadHandler.textで取得データを表示させるようにする。

下記のものを作成。

using System.Collections;
using UnityEngine;
//これが必要になります
using UnityEngine.Networking;

public class APIWEB : MonoBehaviour
{

string webURL = "https://kaitakugogo.com/unityxvrxblockchain203";

public void Start()
{
//通信はコルーチンを使って行います。
StartCoroutine(GetData());
}

IEnumerator GetData()
{

UnityWebRequest request = UnityWebRequest.Get(webURL);
yield return request.SendWebRequest();

//エラー処理
if (request.isNetworkError)
{
Debug.Log(request.error);
}
else
{
//リクエストが成功した時
if (request.responseCode == 200)
{
Debug.Log(request.downloadHandler.text);
}
}
}
}

自分のブログで実施したら検証でみられるコードと同様のものが取得できた。

UnityWebRequestの流れを図で確認する。

引用:unity公式サイト

https://docs.unity3d.com/ja/2018.4/Manual/UnityWebRequest.html

UnityWebRequestによるHTTP通信

Web情報をgetすることはできたので、postする方も確認する。下記からサンプル取得。

https://docs.unity.cn/ja/2017.4/ScriptReference/Networking.UnityWebRequest.Post.html

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;

public class APIPOST : MonoBehaviour
{
void Start()
{
StartCoroutine(Upload());
}

IEnumerator Upload()
{
WWWForm form = new WWWForm();
form.AddField("myField", "myData");

using (UnityWebRequest www = UnityWebRequest.Post("http://www.my-server.com/myform", form))
{
yield return www.SendWebRequest();

if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
}
}

上記を試しに実行してみると

HTTP/1.1 405 Method Not Allowed
UnityEngine.Debug:Log(Object)
<Upload>d__1:MoveNext() (at Assets/APIPOST.cs:23)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr) (at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)

と表示された。そりゃそう。権限がないのに他のサイトに投稿はできない。

他にpostを試せるものを探しているとgoogle翻訳を使用した面白い例を見つけることができたので、そちらを試していく。

https://www.atmarkit.co.jp/ait/articles/0507/01/news133.html

Web上でなんらかの機能を実行するときには、httpを通してサーバーに処理を依頼する形になるので、その処理先がわかれば他のページまたはアプリからその機能を活用できる。

ここではgoogle翻訳がhttp://translate.google.com/translate_t」に対して、4つのパラメータを送信していることがhtmlからわかるので、その機能をunity経由で別の形で実行してみる。

Monobehaviorを継承していないのでunityのオブジェクトにアタッチして実行することはできないのかで、まずはvisual studio上で実行して結果を確認しようとするも結果が返ってこない。

visual studioでのC#スクリプトの実行方法を色々調べてみるとどうも私が使用しているvisual studioと表示が違うので一旦アップグレードをかけた。

インストールし直すと表示が改善。こちらのvisual studioで試していく。

新たなvisual studioで早速試してみたらHttpUtilityの部分でエラー。System.Web 名前空間のアセンブリをメニューの [参照の追加] で「System.Web」コンポーネント名を追加した。

実行するとWebResponse res = req.GetResponse();部分でエラーが返ってきた。調べてみるとアクセス権周りの問題またはファイアウォール関係の問題のよう。

いまいちまだアカウントサイトを生成し、そちらとunityでの情報のやり取りの流れがイメージできない。

そもそもpostするには自分で自由にできるサーバーが必要な気がするので、そのようなサーバーを探すところから始める必要があるのか調査。

https://docs.microsoft.com/ja-jp/aspnet/core/tutorials/first-web-api?view=aspnetcore-5.0&tabs=visual-studio-mac

 

人気の記事

1

皆さん、ついに、エアラインでも、サブスクリプションが始まったのはご存じですか? まだ実験段階ですが、ANAが、定額全国住み放題サービスを提供する「ADDress」と組んで、国内線を4回まで定額利用可能 ...

2

無料でネットショップを開けるアプリとして多くの人に驚きを与えたBASE株式会社が、2019年10月25日東証マザーズに上場しました。2020年2月時点で90万店を超えるショップを抱えるまでに成長してい ...

3

2011年にサービスを開始してから圧倒的な成長率を誇るインテリア通販サイト 【FLYMEe/フライミー】を皆さんご存じでしょうか。 「自分のイメージするインテリア、本当に欲しいインテリアがどこにあるの ...

4

ついに、noteの月間アクティブユーザー数が4400万人(2020年3月時点)に到達しました。 そもそも、「note」とは、クリエイターが、文章やマンガ、写真、音声を投稿することができ、ユーザーはその ...

5

ボードゲームカフェが1日2回転で儲かるという記事をみつけたので興味を持ち、調べてみました。 まずは、需要がどれくらいあるのか、市場のようすからみていきましょう。 世界最大のボードゲーム市場はドイツで、 ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HUNTER , 2023 All Rights Reserved Powered by AFFINGER5.