Set fun(name: string, value: usertype)
Stateに値を設定します。
if vci.assets.IsMine then -- 呼び出したユーザーが代表して初期化する vci.studio.shared.Set('switch', 0) end function onUse(use) print('use') vci.studio.shared.Set('switch', 1) end function onUnuse(use) print('unuse') vci.studio.shared.Set('switch', 0) end
Get fun(name: string)
Stateの値を取得します。
グローバル同期変数には実装上の弱点があります。
local value = vci.studio.shared.Get('valueName')
-- あらかじめ値を受け取る関数を用意して message.On('response_valueName', function() end) -- 値を要求 message.Emit('request_valueName')
-- 値が要求されたら message.On('request_valueName', function() -- アイテム内同期変数から値を得て投げ返す vci.Emit('respone_valueName', vci.state.Get('valueName')) end)
ちょっと大変です。
Bind fun(name: string, callback: usertype)
同期変数の値が変更されたときに実行されます。
初期に updateAll が無かったために実装されました。
Bind は updateAll と似ていますが、ちょっと違います。
-- Bind。値が変更されたタイミングだけ呼ばれる vci.studio.shared.Bind('switch', function(value) if value==1 then vci.assets.SetMaterialColorFromIndex(4, Color.__new(1, 0, 0, 1)) else vci.assets.SetMaterialColorFromIndex(4, Color.__new(0.5, 0.5, 0.5, 1)) end end)
-- updateAll。値が変更されなくても毎フレーム呼ばれる function updateAll() -- 所有権に関係なく全ユーザーに来る --print(vci.state.Get('switch')) if vci.studio.shared.Get('switch')==1 then vci.assets.SetMaterialColorFromIndex(4, Color.__new(1, 0, 0, 1)) else vci.assets.SetMaterialColorFromIndex(4, Color.__new(0.5, 0.5, 0.5, 1)) end end
GetHashCode fun(): number
ハッシュ値を求めます。
ToString fun(): string
文字列に変換します。