プレイヤーを取得する
これらのノードは、特定のプレイヤー、プレイヤーのグループ、あるいは全員を取得するのに便利です。
Networking.get LocalPlayer
VRCPlayerApi
この関数は本来 Networking クラスのメンバーですが、便宜上ここに含めています。
ローカルプレイヤーとは、現在この Udon スクリプトが実行されているプレイヤー、つまりあなた自身のことです。自分自身を把握しておくことは非常に重要です!
GetPlayerCount
int
呼び出された時点でのインスタンス内の実際のプレイヤー数を取得します。
GetPlayers
VRCPlayerApi[]
ワールド内の全プレイヤーを取得する方法です。これを使用することで、For ループで各プレイヤーを走査して設定の適用や変更を行ったり、特定の名前を探したりすることができます。
最も簡単な方法は、パラメータを受け取らないバージョンを使用することです。
- Udon Graph
UdonSharp
![GetPlayersを呼び出すための必要最小限の構成です。VRCPlayerApi[]を変数として構築しておけば再利用できるため、より優れたアプローチとなります。](https://creators.vrchat.com/assets/images/graphgetplayers_alloc-fd1ad16b908bd86884ba94833d304e23.png)
VRCPlayerApi[] players = VRCPlayerApi.GetPlayers();
for (int i = 0; i < players.Length; i++)
{
VRCPlayerApi player = players[i];
// Do something with the player...
}
上記のアプローチでも動作しますが、使用するたびにメモリを割り当ててしまうため、呼び出すたびに VRCPlayerApi 配列が再構築されることになります。
このメソッドを頻繁(例えば毎フレームなど)に使用する場合は、代わりに非アロケーション(メモリを確保しない)バージョンを使用してください。こちらでは、変数として保存された VRCPlayerApi 配列を渡し、毎回再利用するようにします。配列は、ワールドで許可される最大プレイヤー数を保持できる十分な大きさであることを確認してください!
- Udon Graph
UdonSharp
![GetPlayers を定期的に使用するためのより効率的なパターン。このアプローチでは VRCPlayerApi[] を再利用可能な変数として構築するため、GetPlayers が実行されるたびにメモリ内に新しい配列が構築されるのを防ぎます。](https://creators.vrchat.com/assets/images/graphgetplayers_nonAlloc-ace46bda96c7762fc3adad8737801e90.png)
private VRCPlayerApi[] players;
private void Start()
{
players = new VRCPlayerApi[100]; // The array should be large enough to hold all of your players at once.
}
private void Update()
{
VRCPlayerApi.GetPlayers(players);
int playerCount = VRCPlayerApi.GetPlayerCount();
for (int i = 0; i < playerCount; i++)
{
VRCPlayerApi player = players[i];
// Do something with the player...
}
}
GetPlayerById
int
指定されたプレイヤー Id に対応する VRCPlayerApi オブジェクトが存在する場合、それを取得します。
get playerId
int
キャッシュされた PlayerId を取得します。まだキャッシュされていない場合は GetPlayerId を呼び出します。
GetPlayerId
int
ソースからプレイヤーの Network Id を取得します。
Player Tag System
このシステムは、独自の変数やコレクションを作成することなく、プレイヤーに文字列を割り当てるための簡便な方法です。
SetPlayerTag / GetPlayerTag
Set: string, string
Get: string
後で参照できる文字列変数を設定します。例えば、料理ゲームにおいてプレイヤーの「role」を「chef」や「customer」として設定することができます。その後、GetPlayerTagで「role」を指定することで、「chef」または「customer」を取得できます。
ClearPlayerTags
VRCPlayerApi
プレイヤーに設定したすべてのタグを削除します。
GetPlayersWithTag
現在機能していません。Udonでは利用できない List を返します。
将来的には、VRCPlayerApi オブジェクトの配列とタグを渡すことで、そのタグが設定されているプレイヤーを配列に格納できるようになる予定です。
最終更新: