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

コロナによる需要変化 コロナパンデミックの影響で、人々は外に出られなくなり、自宅で過ごす時間が増えました。 この自粛ムードの中、下記のようなビジネスの需要変化が引き起こされています。 【利用者減少】 ...

2

米国レストランの決済時に毎日お世話になっていた「Square」のビジネスモデルについて本日はふれていきたいと思います。 「Square」とは、ネットにつながったモバイル端末と専用のカードリーダーを用意 ...

3

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

4

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

5

ナイキのSNKRSが、なぜこれほどまでに人気なのか?調べてみました。 きっかけは米国での友達との会話。彼は自分のシューズをみせて、「これ20万円もしたんだぜ。」と語ってくれました。 あまり靴に興味がな ...

-Blockchain, code, Metaverse, VR
-, ,

Copyright© BUSINESS HACKER , 2021 All Rights Reserved Powered by AFFINGER5.