Udonドキュメント
Creator Economy への参加を希望する場合は、申請を送信 してください!
以下のページは、VRChat の Creator Economy へのアクセス権を持つ販売者にのみ関係する内容です。
このページでは、VRChat Creator Economyに関連するすべてのUdonの型、メソッド、イベントについて解説します。これらを使用して、Udon Node Graph または UdonSharp で独自の Udonスクリプト を作成することができます。
型
VRChatのSDKには、顧客が購入可能なUdon製品の管理をサポートするオブジェクト型が含まれています。
UdonProduct
UdonProductは、プロジェクト内で作成できる ScriptableObject です。これはストア上の製品を表すもので、Udon内で製品を操作できるようにします。 ワールドは、その内部で使用されている製品に基づいたイベントのみを受信します。そのため、アップロード前に少なくとも1回は、いずれかのUdonBehaviourで製品に対応するUdonProductを参照させておく必要があります。
例えば、UdonProductを直接どこにも使用しない場合であっても、シーン内の少なくとも1つのUdonBehaviour上にUdonProductの配列を持たせておかなければ、それらの製品に関する OnPurchaseConfirmedMultiple、OnPurchaseExpired、OnPurchasesLoaded イベントをすべてのUdonBehaviourで受信することはできません。
UdonProductは、UdonProductManager(「VRChat SDK」→「UdonProduct Manager」)を使用するか、手動でUdonProductアセット(「Assets」→「Create」→「VRChat」→「UdonProduct」)を作成することで作成できます。
プロジェクトでのUdonProductアセットの作成方法については、Getting Started を参照してください。

Fields
| Field name | Type | Description |
|---|---|---|
| ID | string | Udon製品の固有識別子。VRChatウェブサイトのストアからコピーして入力してください。 |
| Name | string | Udon製品の名前。 |
| Description | string | Udon製品の説明。 |
Equals
Description このメソッドは、製品IDが別の製品のIDと一致するかどうかを比較します。
Input
IProductまたはUdonProduct: 比較対象となる製品。
Output
bool: 2つの製品が等しい場合はtrue、それ以外の場合はfalse。
IProduct
これは、すべてのUdon Creator Economyのメソッドおよびイベントによって返されるUdonProductの相当物です。
| Field name | Type | Description |
|---|---|---|
| ID | string | Udon製品の固有識別子。 |
| Name | string | Udon製品の名前。 |
| Description | string | Udon製品の説明。 |
| Buyer | VRCPlayerAPI | この製品を購入したプレイヤー。 |
Equals
Description このメソッドは、製品IDが別の製品のIDと一致するかどうかを比較します。
Input
IProductまたはUdonProduct: 比較対象となる製品。
Output
bool: 2つの製品が等しい場合はtrue、それ以外の場合はfalse。
UdonProductおよびIProductの "Name" と "Description" フィールドは、現在ワールド内に存在するUdonProductから値が設定されます。
Methods
SDKには、プレイヤーの購入状況やVRChatのストアページとやり取りするためのメソッドが含まれています。これらのメソッドは「Store」名前空間の下にあります。
Store.DoesPlayerOwnProduct
このメソッドは、プレイヤーが特定の製品を所有しているかどうかを確認します。
Input
VRCPlayerApi: 製品の所有状況を確認したいプレイヤー。UdonProductまたはIProduct: 所有状況を確認したい製品。
Output
bool: プレイヤーが製品を所有している場合はtrue、それ以外の場合はfalseを返します。
Start イベントの直後に Store.DoesPlayerOwnProduct を使用しないでください。Udonがまだプレイヤーの購入情報を受信していない可能性があるためです。競合状態を避けるには、代わりに OnPurchasesLoaded イベントを使用してください。
Store.DoesAnyPlayerOwnProduct
このメソッドは、インスタンス内のいずれかのプレイヤーが特定の製品を所有しているかどうかを確認します。
Input
UdonProductまたはIProduct: 所有状況を確認したい製品。
Output
bool: インスタンス内のいずれかのプレイヤーが製品を所有している場合はtrue、それ以外の場合はfalseを返します。
Store.GetPlayersWhoOwnProduct
このメソッドは、インスタンス内で特定の製品を所有しているすべてのプレイヤーを取得します。
Input
UdonProductまたはIProduct: 所有状況を確認したい製品。
Output
VRCPlayerApi[]: この製品を所有しているインスタンス内のプレイヤーの配列。
Store.OpenWorldStorePage
現在のワールドにストアページが存在する場合、そのページを開きます。
Store.OpenGroupPage
VRChatのメインメニューで、グループの Group Info ページを開きます。
Input
string: グループのID(例:grp_00000000-0000-0000-0000-000000000000)- グループIDを見つけるには、VRChat.comでグループを開き、ブラウザのアドレスバーからIDをコピーしてください。
Store.OpenGroupStorePage
VRChatのメインメニューで、グループの Store ページを開きます。
Input
string: グループのID(例:grp_00000000-0000-0000-0000-000000000000)- グループIDを見つけるには、VRChat.comでグループを開き、ブラウザのアドレスバーからIDをコピーしてください。
Store.OpenListing
VRChatのメインメニューで、出品(Listing) の購入画面を開きます。 有効化されている出品であれば、グループ ストア やワールド ストア に追加していなくても開くことができます。
Input
string: 出品のID(例:prod_00000000-0000-0000-0000-000000000000)
Store.OpenMarketplaceStore
VRChatメインメニューのマーケットプレイスストアのセクションを開きます。オプションで、そのセクション内の 出品 の詳細ページを直接開くことも可能です。 グループストアやワールドストアの場合、その出品が含まれる ストア に関連付けられたグループIDまたはワールドIDを指定することで、公開済みのあらゆる出品を開くことができます。
Input
string: 開きたいマーケットプレイスのセクション。vrchat: 「Exclusive」セクションを開きます。avatar: 「Avatars」セクションを開きます。world: 「World Stores」セクションを開きます。group: 「Group Stores」セクションを開きます。string: 開きたい出品のID(例:prod_00000000-0000-0000-0000-000000000000)。空の文字列を指定した場合は、指定したストアセクションのみが開かれます。string(オプション): 出品のコンテキスト(グループIDまたはワールドID)。グループストアやワールドストア内の出品を開く場合にのみ必要です(例:grp_00000000-0000-0000-0000 000000000000またはwrld_00000000-0000-0000-0000 000000000000)。
Store.SendProductEvent
ターゲットの UdonBehaviour に対して、インスタンス内の全プレイヤーに OnProductEvent イベントを送信します。
ネットワークイベントを送受信する前に、このメソッドは SendProductEvent を使用しているプレイヤーがその製品を購入済みかどうかを確認します。
Input
UdonBehaviour: 結果として発生する OnProductEvent イベントを受け取る UdonBehaviour。UdonProductまたはIProduct: イベントに使用する製品。
Store.ListPurchases
ターゲットプレイヤーが行ったすべての購入情報を配列として、対象の UdonBehaviour に OnListPurchases イベントを送信します。
Input
UdonBehaviour: 結果として発生する OnListPurchases イベントを受け取る UdonBehaviour。VRCPlayerApi: 購入済み製品を確認したいプレイヤー。
Store.ListAvailableProducts
ワールド内で使用されているすべての製品を含む配列を、ターゲットとなる UdonBehaviour に OnListAvailableProducts イベントとして送信します。
Input
UdonBehaviour: 結果として発生する OnListAvailableProducts イベントを受け取る UdonBehaviour。
Store.ListProductOwners
ターゲットとなる UdonBehaviour に OnListProductOwners イベントを送信します。このイベントを使用すると、サポーター全員の名前を取得して、例えばワールド内にユーザー名を表示するといったことが可能になります。
- このイベントを正常に動作させるには、まず VRChat.com 上の Udon 製品に対して "Owners Names in Udon" 設定 を有効にする必要があります。有効にしない場合、OnListProductOwners は発生しません。
- ワールドをローカルでテストしている場合、OnListProductOwners は実際のユーザー名の代わりに「VRCat, Fred, VRRat」というプレースホルダーのユーザー名を読み込みます。
- GameObject に複数の UdonBehaviour コンポーネントが含まれている場合、このイベントは正常に動作しない可能性があります。
Input
UdonBehaviour: 結果として発生する OnListProductOwners イベントを受け取る UdonBehaviour。UdonProduct: 所有者のユーザー名を取得するための UdonProduct。
VRCOpenMenu.OpenAvatarListing
VRChat のメインメニューで、公開されているアバターの詳細・購入画面を開きます。
Input
string: アバターの ID(例:avtr_00000000-0000-0000-0000-000000000000)
Events
GameObject や UdonBehaviour を無効にすると、Creator Economy(クリエイターエコノミー)に関連するイベントのほとんどは実行されなくなります。
OnPurchaseConfirmed
このイベントは、プレイヤーの購入情報が読み込まれ、確定した際に発生します。購入情報は以下の状況で読み込まれます。
- インスタンス参加時(ローカルプレイヤー、および他のすべてのプレイヤーについて)
- インスタンスに新しいプレイヤーが参加した時
- インスタンス内のいずれかのプレイヤーがワールドの製品を購入した時
Output
IProduct: 購入された製品。VRCPlayerApi: その製品を購入したプレイヤー。bool: 購入直後の場合はtrue、ワールド参加時のプレイヤーの購入情報読み込みの一環として行われた場合はfalseとなります。
OnPurchaseConfirmedMultiple
このイベントは、プレイヤーの購入情報が読み込まれ、確定した際に発生します。購入情報は以下の状況で読み込まれます。
- インスタンス参加時(ローカルプレイヤー、および他のすべてのプレイヤーについて)
- インスタンスに新しいプレイヤーが参加した時
- インスタンス内のいずれかのプレイヤーがワールドの製品を購入した時
Output
IProduct: 購入された製品。VRCPlayerApi: その製品を購入したプレイヤー。bool: 購入直後の場合はtrue、ワールド参加時のプレイヤーの購入情報読み込みの一環として行われた場合はfalseとなります。int: ユーザーが購入した数量。数量購入が有効なインスタントリスティングの場合、quantityは1から99の範囲となります。それ以外のすべてのリスティングタイプでは、quantityは常に1です。
OnPurchaseConfirmed は非推奨であり、数量購入をサポートしていません。同一スクリプト内で OnPurchaseConfirmed と OnPurchaseConfirmedMultiple の両方を使用しないでください。使用した場合、同じ購入を誤って二重に検知する可能性があります。
OnPurchaseExpired
このイベントは、インスタンス内のプレイヤーが所有する製品のいずれかが期限切れになったことをローカルクライアントが検知した際に発生します。
Output
IProduct: 期限切れになった製品。VRCPlayerApi: 製品の期限が切れたプレイヤー。
OnPurchasesLoaded
このイベントは、ローカルプレイヤーがインスタンスに参加した時、または他のプレイヤーが後から参加した時に、プレイヤーの購入情報がすべて読み込まれると発生します。 プレイヤーが製品を何も所有していない場合でもイベントは発生し、その際の IProduct[] 配列は空になります。
Outputs
IProduct[]: プレイヤーが所有している製品の配列。VRCPlayerApi: 購入情報が読み込まれたプレイヤー。
OnProductEvent
このイベントは、プレイヤーが Store.SendProductEvent を使用した際に発生します。ローカルプレイヤーがイベントを実行する前に、ローカルプレイヤーと VRChat サーバーの両方が、そのプレイヤーが製品を購入済みであるかを確認します。
Output
IProduct: イベントと共に「送信」された製品。VRCPlayerApi: 製品を使用したプレイヤー。
OnListPurchases
このイベントは、ローカルプレイヤーが Store.ListPurchases を使用した際に発生します。対象プレイヤーが行ったすべての購入情報の配列を返します。
Outputs
IProduct[]: 対象プレイヤーが所有している製品の配列。VRCPlayerApi: 購入情報を取得した対象プレイヤー。
OnListAvailableProducts
このイベントは、ローカルプレイヤーが Store.ListAvailableProducts を使用した際に発生します。ワールド内で使用されているすべての製品(UdonProduct)の配列を返します。
Outputs
IProduct[]: ワールド内で使用されているすべての UdonProduct を表す IProduct の配列。
OnListProductOwners
このイベントは、Udon スクリプトが Store.ListProductOwners を呼び出した後に発生します。対象製品を所有しているすべてのプレイヤーの表示名を含む配列を返します。このリストには、現在のインスタンス内にいるユーザーだけでなく、その製品を所有するすべてのユーザーが含まれます。 インスタンス内にいるプレイヤーが Udon 製品を所有しているかを確認するには、代わりに Store.DoesPlayerOwnProduct を使用してください。
Outputs
IProduct: 初期の Store.ListProductOwners 呼び出しで渡されたプロダクト。string[]: このプロダクトを所有している全ユーザーの名前が含まれる文字列の配列。
最終更新: