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

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

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.