変数
変数は、トリガーが覚えておく値です。扉が開いているか、何回押されたか、今のスコアはいくつか、といったことを持たせます。
変数を作る
「変数」の欄の「+ 変数」を押すと、変数が 1 つ増えます。名前を付けて、種類を選びます。
| 種類 | 持つもの | 例 |
|---|---|---|
| オン/オフ | オンかオフ | 扉が開いている、ライトがついている |
| 整数 | 整数 | 回数、点数 |
| 小数 | 小数 | 時間、音量 |
| 文字 | 文字 | 名前、メッセージ |
| オブジェクト | シーンのオブジェクト 1 つ | 動かす対象 |
| オブジェクトのリスト | オブジェクトをいくつも | まとめて操作するライト |
| プレイヤー | プレイヤー 1 人 | 最後に押した人 |
ほかの種類は、「くわしく」にすると選べます。
同期しない・同期する・一時的・保存する
最初の値の横で、同期するかどうかを選びます。一時的や、保存する変数にもできます。
- 同期しない: プレイヤーごとに別の値を持ち、変えるまでその値のまま
- 同期する: 全員に同じ値が届き、あとから来た人にもそのときの値が届く
- 一時的: イベントが動くたびに最初の値から始まり、ほかのトリガーからは見えない
- 保存する: プレイヤーごとの値を保存し、その人が次に来たときに戻す
同期のしくみと使い分けは、全員で同じ状態にする にまとめています。
「保存する」にした変数は、VRChat の PlayerData に、その人の値として残ります。所持金や、設定パネルで選んだ明るさなどに向いた使い方です。保存した値は、その人のデータが読み込まれたとき(「プレイヤーの保存データが読み込まれたとき」)に戻り、「変数が変わったとき」も動きます。読み込まれる前に変えた値は保存されません。
保存できるのは、オン/オフ・数・文字・位置・色・回転の変数です。保存する変数は同期にも一時的にもできません。保存の名前は、最初は「保存する」を選んだときの変数の名前で、変数の下の「保存の名前」で変えられます。あとで変数の名前を変えても、保存の名前は変わりません。ほかのトリガーでも同じ保存の名前を使うと、同じ値を共有します。
保存した値は、トリガーのオブジェクトが入室時に表示されていないと、戻らないことがあります。保存する変数は、最初から表示されているオブジェクトのトリガーに置いてください。
保存する変数を変えると、そのたびに、その人の保存データがすべて送られます。毎フレームのように 1 秒に何度も変えるイベントでは警告が出るので、変える回数の少ないイベントで変えてください。
値を変える
変数の値は、「変数」の分類にあるアクションで変えます。
| アクション | すること |
|---|---|
| 変数に値を入れる | 値や、ほかの変数・イベントの値を入れる |
| 変数を切り替える | オン/オフを入れ替える |
| 変数に足す | 数を足す(引くときはマイナス) |
| ランダムな数を入れる | 最小〜最大のランダムな数を入れる |
| 計算して変数に入れる | A と B を + − × ÷ % で計算して入れる(位置や色、文字の連結も) |
| コンポーネントを取り出す | オブジェクトのコンポーネントを、その型の変数に入れる |
「Udon の機能を呼ぶ」の結果を入れることもできます。どの方法で変えても、同期する変数なら値が全員に届き、「変数が変わったとき」が動きます。
文字に値を入れる
「テキストを変える」や「ログを出す」の文字に {スコア} のように変数の名前を書くと、その変数の今の値に置き換わります。スコア: {スコア}点 と書けば、看板に「スコア: 12点」と出せます。欄は複数行で、改行もそのまま入れられる作りです。
変数を作らなくても、次の値はどの文字にも入れられます。同じ名前の変数があるときは、変数のほうが入ります。
| 書き方 | 入る値 |
|---|---|
{プレイヤー数}({playerCount}) | インスタンスにいる人数 |
{自分の名前}({myName}) | 自分の表示名 |
{時刻}({time}) | 今の時刻(24 時間の「時:分」) |