Actions
ロールは、プレイヤーへの付与・剥奪が行われた瞬間に、ワールド内で自動的に何かを実行するよう連携させることができます — テレポート、アニメーションの再生、オブジェクトの表示・非表示などです。この連携は SS_RolesManagement 上の Role Actions リストで行われ、Roles リスト自体とは別のものです。1 つのロールの付与・剥奪に対して、ロールごとの上限なくいくつでもアクションを紐付けられます。
アクションの種類
Security System には 3 つのアクションスクリプトが同梱されており、それぞれ専用の GameObject に配置され、Role Actions のバインディングから参照されます。
SS_Action_Teleport— 対象のプレイヤーを、設定した Destination の Transform へテレポートさせます。SS_Action_ToggleObjects— 一方の GameObject 群を有効化し、もう一方を無効化します。Objects Enabled On Grant リストと Objects Disabled On Grant リストがあり、同じバインディングが剥奪側で発火した場合は効果が自動的に反転します(付与時に表示されたものは剥奪時に非表示になり、その逆も同様です) — 剥奪用に 2 つ目のバインディングを用意する必要はありません。SS_Action_AnimationTrigger— 設定した Animator 上の、指定した名前の Trigger パラメータを発火させます。これはプレイヤー個別の効果ではなくワールド全体の効果であるため、どのプレイヤーのロールが変化したかに関わらず、全員に対して同一に実行されます。
ロールへのアクションの紐付け
SS_RolesManagement の Role Actions リストの各エントリには、以下があります。
| フィールド | 説明 |
|---|---|
| Role | このバインディングが発火する対象のロールです。 |
| On Granted / On Revoked | このバインディングが付与時に発火するか、剥奪時に発火するかです。 |
| Action Target | 実行するアクションスクリプト(SS_Action_Teleport、SS_Action_ToggleObjects、または SS_Action_AnimationTrigger)です。 |
発火させたいアクションごとに 1 エントリを追加してください — 1 つのロールに、付与用・剥奪用の両方をカバーする複数のバインディングを設定することもできます。
Teleport と Toggle Objects のアクションは、実際の裏側のイベントがすべての接続クライアント上で実行されるにもかかわらず、ロールが実際に変化したプレイヤーにのみ影響します — それぞれが何か実行する前に「これは自分自身のローカルプレイヤーか?」を判定してフィルタリングしています。
開発者向け情報
すべてのアクションスクリプトは、ロールシステムが内部的に呼び出す引数なしのバージョンに加えて、型付きの ExecuteLocal(VRCPlayerApi forPlayer) オーバーロードも公開しています。これにより、互換性のある Admin Tablet のような別のスクリプトが、ロールの付与・剥奪を一切経由せずに、まったく同じテレポート・トグル・アニメーションを直接トリガーできます。独自の連携を構築する場合は、ロールイベントを発火させようとするのではなく、アクションへの型付き参照を使ってこのオーバーロードを呼び出してください。