バーチャルキャスト公式Wiki
メニュー
Steam版
デバイス
アセット
配信
その他
リリース情報
- wiki編集者用ページ
-
以前のリビジョンの文書です
VCIから別のVCIへMessageを飛ばしてVCI間の通信に使用する事が出来ます。
この機能により、VCIからVCIに対して操作する事が可能となります。
共有変数とは扱いが異なります。
vci.message で送信出来る文字量は UTF-8 換算で 4000 byte
までとなります。
名前 | 説明 | 対応バージョン |
---|---|---|
Emit(messageName, value) | メッセージを送信します。メッセージは、自分自身を含む全ユーザーの全VCIに送信されます。 | |
EmitWithId(messageName, value, targetId) | 特定のVciIdを指定することで、指定のVCIに対してメッセージを送信することが出来ます | v2.0.0b以降 |
On(messageName, callback) | メッセージを受信します。 |
以下、3つの引数をとります。senderはシステムによって設定される送信者情報のtableです。
引数 | 内容 |
---|---|
sender.type | vci という文字列。 |
sender.name | 送信元のVCIのTitle。 |
sender.commentSource | 空文字列。 |
name | メッセージの名前。Emit 関数の第1引数です。 |
message | メッセージの内容。Emit 関数の第2引数です。 |
送信側
function onUse(self) -- 第1引数にメッセージの種類 第2引数にメッセージの内容 -- 今回は受信側のSubItemをジャンプさせるメッセージとその強さを指定 vci.message.Emit("message_jump",3000) end
受信側
local receiver = vci.assets.GetTransform("Cube") -- sender: 送信者情報(システムが設定します) -- name: メッセージの名前。Emit 関数の第1引数です。 -- message: メッセージの内容。Emit 関数の第2引数です。 function Jump(sender, name, message) for k, v in pairs(sender) do print(k .. ":" .. v) end -- nameにメッセージの種類 messageにメッセージの内容が入ってます print(name) print(message) --messageに入っているジャンプの強さでSubItemを飛ばします receiver.AddForce(message*receiver.GetUp()) end --シーンでメッセージ名が"message_jump"のvci.message.Emitが実行されたときにJump関数が呼び出される vci.message.On("message_jump", Jump)
EmitWithIdで特定のVCIに対して送信する
function GetMessage(sender, name, message) print(message.abc) end vci.message.On("123", GetMessage) function update() -- vci.assets.GetInstanceIdを指定して自分自身にだけ送信する vci.message.EmitWithId("123", { abc = "ハロー" }, vci.assets.GetInstanceId()) end
送信側がやっている事
基本的に送りたいメッセージをEmit()を実行して送るだけです。
ただし、受信側とどのようなメッセージをやり取りするかは事前に決めておく必要があります。
受信側がやっている事
1.vci.message.On() で受信したいメッセージの種類を登録します。
Emit()でメッセージが送信された時にOn()で登録されたメッセージを読み込むことができます。
2.この例では、送られてきたメッセージはJump()に渡されます。
メッセージの内容がJump()の引数として与えられます。
3.Jump()の引数の内容がメッセージの内容なので、
送信するメッセージの内容を変化させることで、受信側の挙動を変えることができます。