メインコンテンツまでスキップ

VRCObjectPoolを設定する

VRCObjectPool とは​

VRCObjectPool は、VRChat SDKが提供するコンポーネントです。複数のGameObjectを配列で管理し、それぞれの表示状態をプレイヤー間で同期します。

Poolの所有者は、登録されたGameObjectを表示または非表示にできます。途中からワールドへ参加したプレイヤーにも、それぞれの表示状態が反映されます。

Object Spawn Systemでは、この仕組みを利用してSpawn対象の表示・非表示を管理します。

先に PickupをSpawn対応にする の手順を完了し、Spawn対象のGameObjectを用意してください。

1. 必要な数だけGameObjectを用意する​

同時に表示できる最大数だけ、PickupのGameObjectをシーン内に用意します。

たとえば、同じ料理を最大5個まで表示したい場合は、同じ設定のPickupを5個用意します。

2. VRCObjectPool を追加する​

  1. Hierarchyに空のGameObjectを追加する
  2. GameObjectへ VRCObjectPool コンポーネントを追加する
  3. 分かりやすい名前へ変更する

3. Spawn対象を登録する​

作成した VRCObjectPool の Pool 配列へ、用意したGameObjectを登録します。

Inspector右上の鍵で VRCObjectPool を表示したままロックし、Hierarchyで複数選択したGameObjectを Pool へドラッグ&ドロップすると、まとめて登録できます。

VRCObjectPoolのPool配列へSpawn対象を登録した状態

登録するGameObject

Object Spawn Systemの標準版では、VRCObjectPool へ登録するGameObjectと、VRCPickup およびReturn判定に使うColliderを持つGameObjectを同一にしてください。

4. 登録後の動作​

Pool配列へ登録するGameObjectを、Unity上で手動で非表示にする必要はありません。VRCObjectPool に登録されたGameObjectは、ワールドの実行開始時に自動的に非表示になります。

すべてのGameObjectが表示中の場合、Spawnスイッチを操作しても新しいGameObjectは表示されません。

5. Hierarchyを整理する​

同じ種類のPickupと VRCObjectPool をまとめておくと、登録内容を確認しやすくなります。

FoodPool
├─ FoodItem_01
├─ FoodItem_02
├─ FoodItem_03
├─ FoodItem_04
└─ FoodItem_05

FoodPool には VRCObjectPool を追加し、各 FoodItem_xx を Pool 配列へ登録します。

VRCObjectPoolとSpawn対象をまとめたHierarchy

準備ができたら、Spawnスイッチを作る へ進んでください。