Blockchain code Metaverse VR

Unity×VR×Blockchain(278)

スポンサーリンク

//tips
AI搭載のバーチャル・ヒューマンがオークションに出品 落札額は約5,300万円

AI搭載のバーチャル・ヒューマンがオークションに出品 落札額は約5,300万円

自分の分身を作れればなおgood。

//vivox理解

次はsendmessageができるように実装を進めていく。

public void Send_Group_Message(string message)
{
vivox.channelSession.BeginSendText(message, ar =>
{
try
{
vivox.channelSession.EndSendText(ar);
}

catch(Exception e)
{
Debug.Log(e.Message);
}
});

}

public void On_Message_Received(object sender,QueueItemAddedEventArgs<IChannelTextMessage> msgArgs)
{
var messenger = (VivoxUnity.IReadOnlyQueue<IChannelTextMessage>)sender;

Debug.Log($"From {msgArgs.Value.Sender}:Message - {msgArgs.Value.Message}");
}

さらにUIスクリプトの方に下記を追加。

public void Send_Group_Message()
{
credentials.Send_Group_Message(tmp_Input_SendMessages.text);
}

UIにボタンのメソッドをアタッチしていくと、無事にメッセージを送れたことを示すログが確認できた。

From sip:.naki352-vo35-dev.2.@mt1s.vivox.com:Message - hi
UnityEngine.Debug:Log(Object)

このログの部分をUIに表示させたいので、下記のように変更。

public void On_Message_Received(object sender,QueueItemAddedEventArgs<IChannelTextMessage> msgArgs)
{
var messenger = (VivoxUnity.IReadOnlyQueue<IChannelTextMessage>)sender;

Debug.Log($"From {msgArgs.Value.Sender}:Message - {msgArgs.Value.Message}");

Text temp = Instantiate(lobbyUI.txt_Message_Prefab,lobbyUI.container.transform);
temp.text = $"From {msgArgs.Value.Sender.DisplayName}:Message - {msgArgs.Value.Message}";
}

これによりmessageをきちんと表示できるようになった。

今回の内容はシンプルで、もしchat可能な形でチャネルに参加した際、ユーザーはグループメッセージの送受信ができる。その際には、IChannelSession.BeginSendText methodが使用される。送信された内容は、他のユーザーには IChannelSession.MessageLog.AfterItemAdded event.の形で取得される。

If the game has joined the channel with text enabled, users can send and receive group text messages. To send messages, the game uses the IChannelSession.BeginSendText method. After this SDK call is made, other users in that channel receive an IChannelSession.MessageLog.AfterItemAdded event.

using UnityEngine;
using VivoxUnity;

class VivoxGroupTextExample : MonoBehaviour
{
. . .
// For this example, _channelSession is a connected IChannelSession and _accountId is the local user’s AccountId.

. . .
// Sending
void SendGroupMessage()
{
var channelName = _channelSession.Channel.Name;
var senderName = _accountId.Name;
var message = "Hello World!";

_channelSession.BeginSendText(message, ar =>
{
try
{
_channelSession.EndSendText(ar);
}
catch (Exception e)
{
// Handle error
return;
}
Debug.Log(channelName + ": " + senderName + ": " + message);
});
}
. . .

// Receiving
. . .
_channelSession.MessageLog.AfterItemAdded += onChannelMessageReceived;
. . .

void onChannelMessageReceived(object sender, QueueItemAddedEventArgs<IChannelTextMessage> queueItemAddedEventArgs)
{
var channelName = queueItemAddedEventArgs.Value.ChannelSession.Channel.Name;
var senderName = queueItemAddedEventArgs.Value.Sender.Name;
var message = queueItemAddedEventArgs.Value.Message;

Debug.Log(channelName + ": " + senderName + ": " + message);
}
. . .
}

BeginとEndの関係に混乱してきて文章を探していたが、下記文言以外は見つからなかったので、コードそのものの意味で捉え直した。EndはBeginのメソッドの中にあり、処理の実行を担う部分でbeginでは処理の実行のエラー処理も踏まえた上で内容を返すもので、beginメソッドが完了した時点で処理は完了したものと捉える。なので、endの方がbeginよりも先に処理されると理解した。単語に惑わされないよう注意。

Every BeginLogin method call must have an access token that authorizes that game instance to sign in as the specified account.

The EndLogin method must be called within a try block in case an error occurs.

人気の記事

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.