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

VRCObjectPoolを設定する

VRCObjectPool とは​

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

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

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

単純な構造のPickupでは、VRCObjectPool へ登録するGameObjectと、VRCPickup およびReturn判定に使うColliderを持つGameObjectを同一にしてください。

Pickupが子階層にある場合は、CompSpawnHelper または HGSpawnHelper を設定したのち、アイテム全体のルートを登録します。ヘルパーの設定については 複雑なPickupを設定する または へのごはん様製アイテムを設定する を確認してください。

4. 登録後の動作​

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

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

5. Hierarchyを整理する​

PoolとSpawn対象を、用途ごとにまとめておくことを推奨します。

ObjectSpawnPools
└─ FoodPool
├─ FoodItem_01
├─ FoodItem_02
└─ FoodItem_03

FoodPool に VRCObjectPool を追加し、各アイテムのGameObjectを Pool 配列へ登録します。Pickupが子階層にある場合は、各アイテム全体のルートGameObjectを登録してください。

VRCObjectPoolとSpawn対象をまとめたHierarchy

準備ができたら、SpawnObjectExt でSpawnスイッチを作る へ進みます。