この文書の現在のバージョンと選択したバージョンの差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
vci:script:reference:exportshared [2021/11/17 21:12] numa |
vci:script:reference:exportshared [2023/06/01 11:13] (現在) pastatto リファレンスページの注意書き追加 |
||
---|---|---|---|
ライン 1: | ライン 1: | ||
- | ====== ExportShared ====== | + | ~~NOTOC~~ |
- | グローバル同期変数((実装当初は「共有変数」と呼ばれておりましたが、命名が見直されて「グローバル同期変数」となりました。これは「[[vci/script/reference/exportstate|アイテム内同期変数]]」と並ぶ「[[vci/script/reference/syncvariable|同期変数]]」の一つであることを明示するためです。)) 。特定のアイテムに結び付かずに、部屋に変数を保存する機能です。 | + | ====== ExportShared(グローバル同期変数) ====== |
+ | <WRAP center round important 80%> | ||
- | ---- | + | このページは過去の情報となります。\\ |
+ | 新しいスクリプトリファレンスは**[[https://developer.virtualcast.jp/vci-docs/api/|こちら]]**になります。 | ||
+ | </WRAP> | ||
+ | グローバル同期変数((実装当初は「共有変数」と呼ばれておりましたが、命名が見直されて「グローバル同期変数」となりました。これは「[[vci/script/reference/exportstate|アイテム内同期変数]]」と並ぶ「[[vci/script/reference/syncvariable|同期変数]]」の一つであることを明示するためです。)) 。\\ | ||
+ | 特定のアイテムに結び付かずに、部屋に変数を保存する機能です。 | ||
+ | ^ 名前 ^ 説明 ^ バージョン ^ | ||
+ | | [[vci/script/reference/exportshared#Set]] | Stateに値を設定 | | | ||
+ | | [[vci/script/reference/exportshared#Get]] | Stateの値を取得 | | | ||
+ | | [[vci/script/reference/exportshared#Add(非推奨)]] | Stateに値を加算 | | | ||
+ | | [[vci/script/reference/exportshared#Bind]] | ユーザー名を取得 | | | ||
+ | | [[vci/script/reference/exportshared#GetHashCode]] | ハッシュ値を取得 | | | ||
+ | | [[vci/script/reference/exportshared#ToString]] | 文字列に変換 | | | ||
+ | |||
+ | |||
+ | |||
+ | ===== Set ===== | ||
+ | **Set fun(name: string, value: usertype)** | ||
+ | |||
+ | Stateに値を設定します。 | ||
+ | |||
+ | === サンプル === | ||
<file lua main.lua> | <file lua main.lua> | ||
if vci.assets.IsMine then -- 呼び出したユーザーが代表して初期化する | if vci.assets.IsMine then -- 呼び出したユーザーが代表して初期化する | ||
ライン 20: | ライン 41: | ||
</file> | </file> | ||
- | Bind は updateAll と似ていますが、ちょっと違います。 | ||
- | <file lua main.lua> | + | ===== Get ===== |
- | -- Bind。値が変更されたタイミングだけ呼ばれる | + | **Get fun(name: string)** |
- | 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) | + | |
- | </file> | + | |
- | <file lua main.lua> | + | Stateの値を取得します。 |
- | -- Bind。値が変更されなくても毎フレーム呼ばれる | + | |
- | 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 | + | |
- | </file> | + | |
- | ===== Set() ===== | + | ===== Add(非推奨) ===== |
- | ==== 引数 ==== | + | **Add fun(name: string, value: usertype)** |
- | * name : string | + | |
- | * value : number, string | + | |
- | ===== Get() ===== | + | Stateに値を加算します。 |
- | ==== 引数 ==== | + | |
- | * name : string | + | |
- | ==== 返り値 ==== | + | |
- | * number, string | + | |
- | ===== Bind() ===== | + | [[vci/script/reference/exportstate#Add|ExportState.Add]]を参照してください。 |
- | ==== 引数 ==== | + | |
- | * name : string | + | |
- | * callback : 関数 | + | |
- | + | ||
- | ==== 概要 ==== | + | |
- | 初期に updateAll が無かったために実装されました。 | + | |
- | + | ||
- | ===== Add() ===== | + | |
- | ==== 引数 ==== | + | |
- | * name : string | + | |
- | * value : usertype | + | |
- | + | ||
- | ==== 概要 ==== | + | |
- | ExportState.Add項を参照してください。 | + | |
===== グローバル同期変数の弱点と代替策 ===== | ===== グローバル同期変数の弱点と代替策 ===== | ||
ライン 111: | ライン 93: | ||
ちょっと大変です。 | ちょっと大変です。 | ||
+ | |||
+ | ===== Bind ===== | ||
+ | **Bind fun(name: string, callback: usertype)** | ||
+ | |||
+ | 同期変数の値が変更されたときに実行されます。\\ | ||
+ | 初期に updateAll が無かったために実装されました。 | ||
+ | |||
+ | |||
+ | === サンプル === | ||
+ | Bind は updateAll と似ていますが、ちょっと違います。 | ||
+ | |||
+ | <file lua main.lua> | ||
+ | -- 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) | ||
+ | </file> | ||
+ | |||
+ | <file lua main.lua> | ||
+ | -- 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 | ||
+ | </file> | ||
+ | |||
+ | ===== GetHashCode ===== | ||
+ | **GetHashCode fun(): number** | ||
+ | |||
+ | ハッシュ値を求めます。 | ||
+ | |||
+ | ===== ToString ===== | ||
+ | **ToString fun(): string** | ||
+ | |||
+ | 文字列に変換します。 |