Blockchain code Metaverse VR

Unity×VR×Blockchain(229)

スポンサーリンク

//tips

//unity/js連動

Unityからのupdate指示を行なっているAPIPOSTを編集して、ボタンをクリックされたらリクエストを実行する形に変更する。

Unityのシーンに新たにボタンを作成し、クリックにより発動させるスクリプトをアタッチする。

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

public class APIPOSTUP : MonoBehaviour
{
public void jsonGO()
{
StartCoroutine(Upload());
}

IEnumerator Upload()
{
WWWForm form = new WWWForm();
//form.AddField("myField", "myData");
form.AddField("name", "json");
form.AddField("message", "ok");

using (UnityWebRequest www = UnityWebRequest.Post("http://localhost:3000/posts", form))
{
yield return www.SendWebRequest();

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

こちらのjsonGO()メソッドをボタンクリック時に読み込ませるようにButtonオブジェクトのonclick設定をunityで行う。

ボタンクリックを実行すると若干タイミラグがあったが無事に画面に表示された。

クリックの回数での数字変化を含めて画面に表示したいため、変数を2つ追加した。

int count;
int hit=100;

public void jsonGO()
{
StartCoroutine(Upload());
count++;
hit--;
}

IEnumerator Upload()
{
WWWForm form = new WWWForm();
form.AddField("name", count);
form.AddField("message", hit);

きちんとクリックした回数のAddFieldが追加された。

クリック回数に関係なく現在のcount,hitを表示できるように加工する。

Unityからのクリックイベントを常時起動しているjsが受け取った際に、変更があった場合、その変更を反映する方法を考える。

現在unity側からのリクエストが追加項目しかないので、リクエストで、html側から現在の変数状況を取得し、その変数に再度代入処理を行うことができないか見ていく。

画面上の数字を変化させるという点でカウントダウンタイマーと似ているので、そちらも参考にする。

<section>
<p>今から<span id=“timer”></span>以内に注文すると50%オフ</p>
</section>

<script>
‘use strict’;

function countdown(due){
const now=new Date();
const rest = due.getTime() - now.getTime();

const count=[days,hours,min,sec];
return count;
}

let goal = new Date();

const counter=countdown(goal);
const time = ‘$(counter[1])時間…’;
document.getElementById(‘timer’).textContent=time;
</script>

ID箇所に対して、変数timeを代入しており、timeの部分をjsonを取得して加工できれば良いことになる。

現在jsonの反映はindex.htmlの

<tr v-repeat="posts">
<td>{{name}}</td>
<td>{{message}}</td>
</tr>

部分によってなされており、これはjsの

$.ajax({
type: 'GET',
url: apiUrl,
dataType: 'json',
success: function(json) {
message.$data.posts = json;
console.dir(json);
},
data: null
});

でjsonまるごとをmessage.$data.postsに代入していることで得られているので、jsonの最新追加分と過去の集計分を用いて、最新のものにアップデートさせる方法を考える。Unitywebrequest側でjsonデータの更新メソッドを探したが見つからなかったため。

まずはunity側のクリックにてページの値を加算する流れを考えていく。

Jsonに蓄積される配列の順序と前回idの値を参照し、今回のidの値に加算させる流れを考えていく。

Json.length-1のインデックスの値を取得してそれに加算する形を考える。

Js側からjsonの中身を削除できるかも確認。可能であればfor構文で一つずつidを拾い、加算したものを削除していけるはず。

var json=[…];
for(var I=0;i<json.length;i++)
{
count+=json[i]
}
Countで全て加算されているはずなので、この後にjsonの中身の配列を削除する。

Functionとして機能させたいので、

function calc(){
for(var I=0;i<json.length;i++)
{
count+=json[i]
}
return count;
}
var result = calc();

のような形になるか。calc();が呼ばれてからfunctionの中身が実行される順序になる。

人気の記事

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.