ユーザ用ツール

サイト用ツール


vci:script:reference:message

vci.message(VCI間の通信)

VCIから別のVCIへMessageを飛ばしてVCI間の通信に使用する事が出来ます。
この機能により、VCIからVCIに対して操作する事が可能となります。
共有変数とは扱いが異なります。
バーチャルキャスト1.5.4aのVCI更新

  • メッセージはメッセージ送信時に居たプレイヤー間でしか処理されません。
  • (あとから入室してもsetで情報を共有できる共有変数とは異なります)
  • 今後のアップデートでシステムからのメッセージを受け取る事を予定しています。

関数一覧

Emit()

  • メッセージを送信します。
  • メッセージは、自分自身を含む全ユーザーの全VCIに送信されます。

On()

  • メッセージを受信します。
  • メッセージを送信したのと同じVCIでも、別のVCIでもOK。
  • Onの第1引数と Emitの第1引数 が一致したものを受け取ります。
  • 受け取ったメッセージを第2引数の関数に渡します。
  • Onは第2引数で指定した受信関数よりも後に定義してください。受信関数よりも前に定義するとエラーとなります。

受信関数

  • 以下、3つの引数をとります。
  • sender: 送信者情報(システムが設定します)
  • name: メッセージの名前。Emit 関数の第1引数です。
  • message: メッセージの内容。Emit 関数の第2引数です。

具体例

送信側

send.lua
function onUse(self)
    -- 第1引数にメッセージの種類 第2引数にメッセージの内容
    -- 今回は受信側のSubItemをジャンプさせるメッセージとその強さを指定
    vci.message.Emit("message_jump",3000)
end

受信側

get.lua
local receiver = vci.assets.GetSubItem("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)

送信側がやっている事
基本的に送りたいメッセージをEmit()を実行して送るだけです。
ただし、受信側とどのようなメッセージをやり取りするかは事前に決めておく必要があります。

受信側がやっている事
1.vci.message.On() で受信したいメッセージの種類を登録します。
 Emit()でメッセージが送信された時にOn()で登録されたメッセージを読み込むことができます。
2.この例では、送られてきたメッセージはJump()に渡されます。
 メッセージの内容がJump()の引数として与えられます。
3.Jump()の引数の内容がメッセージの内容なので、
 送信するメッセージの内容を変化させることで、受信側の挙動を変えることができます。


サンプル

vci/script/reference/message.txt · 最終更新: 2019/09/03 15:46 by navana

ページ用ツール