ユーザ用ツール

サイト用ツール


vci:sample:message:no2

複数のVCI間で変数をやり取りする


サンプルデータ:送信側:メッセージ送信

サンプルデータ:受信側:メッセージ受信

UnityPackage:tutorial_message_send.zip

VCI v0.17より、vci.messageが実装されてVCIでメッセージの送信、受信を行うことが可能になりました。
これにより複数のVCIの間で変数のやりとりをすることができます。


今回は送信側、受信側の2つのVCIを作成してメッセージの送受信を行います。

送信側のボックスのVCIをOnUseするとメッセージが送信され、受信側の条件と一致した場合に処理が実行されます。
今回のサンプルでは受信側のシリンダーVCIに上向き方向の力がかかり飛び跳ねます。


vci.messageの詳しい仕様はこちらをご覧ください
https://virtualcast.jp/wiki/doku.php?id=%E3%83%A2%E3%83%87%E3%83%AB%E4%BD%9C%E6%88%90:vci%E4%BD%9C%E6%88%90:%E3%83%90%E3%83%BC%E3%83%81%E3%83%A3%E3%83%AB%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%881.5.4a%E3%81%AEvci%E6%9B%B4%E6%96%B0


send.lua
function onUse(self)
    -- メッセージ名: MSG_NAME
    -- メッセージの内容: 1
    vci.message.Emit("send_box_state","addforce_on")
end
 
function onUnuse(use)
    -- メッセージ名: MSG_NAME
    -- メッセージの内容: 1
    vci.message.Emit("send_box_state","addforce_off")
end




get.lua
local sub = vci.assets.GetSubItem("get")
 
function onMessage(sender, name, message)
    -- senderはテーブルになっています。vci.message.Emit関数を実行したvciの情報
    -- {
    --   type: "vci"
    --   name: "vciの名前"
    -- }
    -- 今後の更新で sender が違うメッセージを実装予定です
    for k, v in pairs(sender) do
        print(k .. ":" .. v)
    end
 
    print(name)
    print(message)
 
    if name=="send_box_state" and message=="addforce_on" then
        print("forceon")
        sub.AddForce (1000*sub.GetUp())
    end
end
 
--シーンでvci.message.Emitが実行されたときにonMessage関数が呼び出される
vci.message.On("send_box_state", onMessage)
vci/sample/message/no2.txt · 最終更新: 2019/05/27 21:07 by navana

ページ用ツール