アイテム変数をネットワークを介して同期する vci.state と、 それを使うのに必要な updateAll, vci.assets.IsMine, ExportTransform(SubItem).IsMine を追加します
function updateAll() -- 所有権に関係なく全ユーザーに来る if vci.state.Get("TOGGLE") then vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 0, 0, 1)) else vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 1, 1, 1)) end end function onUse() -- 使用時 local toggle = vci.state.Get("TOGGLE") vci.state.Set("TOGGLE", not toggle) end
だいたい同じことをする例です。
TOGGLE="ITEM_UNIQUE_TOGGLE" -- 同じアイテムが複数持ち込まれたときにスタジオ内でユニークにならない弱点 vci.studio.shared.Bind(TOGGLE, function(value) -- Bind関数が難しい if value then vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 0, 0, 1)) else vci.assets.SetMaterialColorFromIndex(0, Color.__new(1, 1, 1, 1)) end end) function onUse() -- 使用時 local value = vci.studio.shared.Get(TOGGLE) vci.studio.shared.Set(TOGGLE, not value) end
function updateAll() -- 所有権に関係なく全ユーザーに来る if vci.assets.IsMine then -- 処理 end end -- 上と同じ意味になります function update() -- VCIの所有者(VCIを呼び出したユーザー)に来る -- 処理 end
subitem = vci.assets.GetTransform('item_name') function updateAll() -- 所有権に関係なく全ユーザーに来る if subitem.IsMine then -- SubItemの所有者だけで処理したい subitem.SetPosition = Vector3.__new(1, 2, 3) end end