ALL関数#

「ALL関数」は、誰か一人のプレイヤーのクライアントで実行されると、同一空間にいる他のプレイヤーのクライアントでも実行される関数です。

たとえば、どのプレイヤーから見ても同じに見えるようマテリアルの色を変更したり、すべてのプレイヤーに聞こえるように音を再生するといった挙動を簡単に実現できます。

一方で、ALL関数は通信を発生させるため、使用法を誤るとネットワークに大きな負荷をかけてしまう欠点があります。

警告

ALL関数はネットワーク負荷が大きいため、update()updateAll() などのイベントで周期的に呼び出さないでください。

また、ALL関数の実行後に参加したプレイヤーには、ALL関数の実行結果が反映されない点にも注意してください。
参加タイミングに依らずすべてのプレイヤーに同じ状態を保つ必要がある場合には、アイテム内同期変数の使用が推奨されます。

Messageによる代替#

ALL関数が実装されていない関数がありますが、これらはメッセージExportMessage)によって代替できます。たとえば、ExportMaterial._ALL_SetColor()は次のように書き換えることができます。

ALL関数を使用した場合#
vci.assets.material._ALL_SetColor("Mat1", Color.__new(1, 0, 0, 1))
Messageを使用した場合#
vci.message.On("SetColor", function(sender, name, message)
    local color = Color.__new(message.r, message.g, message.b, message.a)
    vci.assets.material.SetColor("Mat1", color)
end)

vci.message.EmitWithId("SetColor", {r=1, g=0, b=0, a=1}, vci.assets.GetInstanceId())