unity-vrc-world-sdk-3 について
World SDK 3 で VRChat ワールドを制作するクリエイター向けのリファレンススキルです。シーン、コンポーネント、パフォーマンス、公開設定をタスク別に案内し、SDK 検証や移行情報、Quest を考慮した設計制約も扱います。
主な機能
- 01シーンとコンポーネントの設定ガイド
- 02レイヤーと衝突の設定
- 03パフォーマンスとライティングの資料
- 04SDK ビルド検証とトラブルシューティング
- 05ワールドのアップロードと公開手順
活用シーン
- 01新しい VRChat ワールドシーンの設定
- 02Pickup、Station、Mirror の構成
- 03SDK 検証アラートの調査
- 04Quest の性能を考慮したワールド準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ niaka3dayo/ agent-skills-vrc-udon --skill unity-vrc-world-sdk-3インストール後、Claude Code で/unity-vrc-world-sdk-3を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
CHEATSHEET.mdLICENSE.txtassets/templates/VRC_Pickup_Rigidbody.csVRC_Station_Basic.csreferences/audio-video.mdbuild-validation.mdcomponents.mdlayers.mdlighting.mdperformance.mdtroubleshooting.mdupload.md詳細
VRChat World SDK 3 ガイド
目次
| セクション | 内容 | 参照 |
|---|---|---|
| シーン設定 | VRC_SceneDescriptor、スポーン | このファイル |
| コンポーネント | Pickup、Station、Mirror | references/components.md |
| レイヤーと衝突 | レイヤー、衝突マトリックス | references/layers.md |
| パフォーマンス | 最適化ガイド | references/performance.md |
| ライティング | ライティング設定 | references/lighting.md |
| オーディオと動画 | オーディオ、動画プレーヤー | references/audio-video.md |
| ビルド検証 | SDK の赤/黄/白の警告 | references/build-validation.md |
| ワールドのアップロード | アップロードのワークフロー | references/upload.md |
| トラブルシューティング | 問題の解決 | references/troubleshooting.md |
| チートシート | クイックリファレンス | CHEATSHEET.md |
メソッドの移行
プレフィックスなしでパラメーターを取らないパブリック UdonSharp メソッドは、レガシーなネットワークディスパッチ経由で引き続き呼び出し可能なため、次のパブリックメソッドの名前を変更しました。
| 変更前 | 変更後 |
|---|---|
ForceDropPickup | _ForceDropPickup |
IsHeld | _IsHeld |
IsOccupied | _IsOccupied |
StopSound | _StopSound |
SlowUpdate | _SlowUpdate |
Inspector のイベント文字列、SendCustomEvent* の呼び出し、遅延イベント、nameof(...) 式、さらにビヘイビアー間の呼び出しも更新してください。古いプレフィックスなしのエイリアスを用意すると、同じレガシーなネットワーク公開が復活するため、互換性エイリアスは提供していません。
よくある間違い(絶対にしないこと)
これらは、気づかないうちにワールドを破損させたり、パフォーマンスを大幅に低下させたり、Quest との互換性を損なったりします。
| # | 絶対にしないこと | 問題点 | 代わりに行うこと |
|---|---|---|---|
| 1 | ミラーをデフォルトで有効にする(ワールド参加時に有効) | ミラーを使うと、負荷の高いシーンのレンダリングが追加されます。その影響は視点、シーン、解像度、デバイスによって異なります | ミラーはデフォルトで OFF にし、プレイヤーが操作できる切り替え機能を追加して、対象デバイスごとにプロファイリングします |
| 2 | プロファイリングせずに、リアルタイムシャドウ付きのリアルタイムディレクショナルライトを使用する | リアルタイムシャドウの負荷は、シーンのジオメトリ、視点、対象デバイスによって異なり、Android ではフレーム時間の大部分を占めることがあります | ベイク済みライトマップとライトプローブを優先し、リアルタイムシャドウを残す場合は、事前に対象デバイスでプロファイリングします |
| 3 | Respawn Height をワールドの床面と同じ高さ、またはそれ以上に設定する | プレイヤーがリスポーン → 落下 → 再度リスポーンという無限ループになり、復帰できなくなります | 到達できない深さに設定します(例:床が Y=0 の場合、Respawn を Y=-100 に設定) |
| 4 | 新しいプロジェクトで「Setup Layers for VRChat」を実行しない | レイヤーの衝突マトリックスはデフォルトで誤っているため、プレイヤーが壁をすり抜けたり、Pickups が床を突き抜けたりします | コライダーを配置する前に、VRChat SDK > Builder > 「Setup Layers for VRChat」を実行します |
| 5 | Android のビルドプロファイルを設定せずにポストプロセッシングを有効にする | Android では実行時にポストプロセッシングが無効になるため、作成したエフェクトは表示されません。また、不要なリソースがビルドサイズを増やす可能性があります | ポストプロセッシングを削除した Android 専用のビルドプロファイルを使用します |
| 6 | 2 つを超える動画プレイヤーを同時に有効にする | プレイヤーごとにデコード負荷が大幅に増加します。実際には、2 つを超えるプレイヤーを同時に動作させると、フレーム落ちや音声の問題がよく発生します | シーン開始時に余分なプレイヤーを無効にし、再生中のプレイヤーだけを有効にします |
| 7 | Android で Cloth を使用する、またはプロファイリングせずに Unity Constraints を多数追加する | Android では Cloth は無効です。Unity Constraints はワールドで使用できますが、使いすぎるとパフォーマンスに大きく影響する可能性があります | Android ビルドから Cloth を削除します。新規作業では VRC Constraints を優先し、制約を多用する構成はプロファイリングします |
| 8 | ライトマップのベイクを完了せずにアップロードする | リアルタイム GI はシーンに応じてレンダリング負荷を大幅に増加させるため、Android で計測せずに代替手段として使用するのは適していません | アップロード前にライトをベイクし、対象デバイスで結果を確認します |
| 9 | プレイヤーが歩ける面に Default レイヤー(0)を使用する | 衝突マトリックスはデフォルトで誤っているため、アバターの物理衝突が不安定になり、プレイヤーがジオメトリをすり抜けることがあります | 歩行可能なジオメトリ、壁、床にはすべて Environment(レイヤー 11)を使用します |
| 10 | プロファイリングせずに広い範囲で非常に高いライトマップ解像度を使用する | 高解像度ではテクスチャメモリが大幅に増加する可能性があり、モバイルヘッドセットで OOM クラッシュが起きる一般的な原因です | 実用的な目安として、10~20 texels/unit(PC)/5~10(Quest)から始めます。VRAM をプロファイリングして調整してください。公式ガイダンスでも Quest では「ライトマップ解像度を低く保つ」よう示されています |
| 11 | Screen Space または Overlay Canvas に VRC_UIShape を追加する | VRC_UIShape には World Space Canvas が必要です。それ以外のモードでは VRChat 実行時に Unity エラーが発生します。UI は見た目上レンダリングされますが操作できず、ワールド作成者にはエラーが表示されません | VRC_UIShape を追加する前に、Canvas > Render Mode を World Space に設定します |
リファレンスの読み込みガイド
タスクに必要なものだけを読み込みます。
| タスク | 必須の読み込み対象 | 任意 | 読み込まないもの | 読み込み理由 |
|---|---|---|---|---|
| 新しいシーンを一からセットアップする | components.md、layers.md | upload.md | audio-video.md、troubleshooting.md | 衝突マトリックスは分かりにくく、コンポーネントの依存関係は事前に確認する必要があります |
| オブジェクトをつかめるようにする(VRC_Pickup) | components.md | layers.md | audio-video.md、lighting.md | Pickup/Rigidbody の要件は標準的な Unity ドキュメントには記載されていません |
ワールドの Dynamics を設定する(PhysBones、Contacts、Box Contacts、Global Avatar PhysBone Colliders、ワールドの VRCPhysBoneCollider アクセス) | components.md | layers.md、troubleshooting.md。Udon コードには unity-vrc-udon-sharp を使用します | audio-video.md、lighting.md | Dynamics コンポーネントの利用可否と Udon アクセスは SDK のバージョンに左右されます |
| 着席機能をセットアップする(VRC_Station) | components.md | layers.md | audio-video.md、performance.md | Station のコライダーと退出要件は VRChat 固有です |
| Quest の FPS を最適化する | performance.md、lighting.md | troubleshooting.md | audio-video.md、upload.md | Quest の制限は PC と異なり、ベイクの要件も分かりにくいためです |
| オーディオまたはビデオプレーヤー/ボイスゾーンを追加する(SetVoiceGain、Steam Audio) | audio-video.md、components.md | troubleshooting.md | lighting.md、performance.md | AVPro と Unity Video の選択は VRChat 固有です |
| WorldQualitySettings、リアルタイムプローブ、または Shadowmask Mode を設定する | components.md | lighting.md。Udon API には unity-vrc-udon-sharp を使用します | audio-video.md、layers.md | 既存の起動時設定やオーバーライドフラグによって、設定済みの品質設定が上書きされることがあります |
| ライトをベイクする/ライトマップを設定する | lighting.md、performance.md | — | audio-video.md、layers.md | ライトマップの解像度とプローブの配置は Quest の VRAM に影響します |
| SDK Build Panel の検証アラート、赤/黄/白の警告、または Auto Fix に関する質問 | build-validation.md | upload.md、troubleshooting.md | audio-video.md、lighting.md | アラートの重大度、ビルドへの影響、Auto Fix の副作用は、SDK に基づくカタログから確認する必要があります |
| ワールドをアップロードして公開する | upload.md | build-validation.md、troubleshooting.md | audio-video.md、lighting.md | アップロードの手順と検証の順序は崩れやすく、見落としが起きやすいためです |
| 衝突またはレイヤーの問題をデバッグする | layers.md、troubleshooting.md | components.md | audio-video.md、lighting.md | VRChat の衝突マトリックスは Unity のデフォルトとは異なります |
| ミラーをセットアップして設定する | components.md | performance.md | audio-video.md、upload.md | ミラーのレイヤーマスク要件は VRChat 固有です |
新しいワールドを始める前に — 設計上の決定事項
これらの決定は、後続のあらゆる選択に影響します。コンポーネントを配置する前に、まず決めてください。
| 決定事項 | 選択肢 | 影響 |
|---|---|---|
| Quest が必須ですか? | はい/いいえ | はい → 後から付け足すのではなく、初日から Quest First の方針を適用します |
| 想定するプレイヤー数は? | 1~8/9~40/40 以上 | スポーン数、ミラーの方針、ビデオプレーヤーの最大数に影響します |
| 主なインタラクションは? | つかむ(Pickup)/座る(Station)/見る(Video)/探索する | 必須となる SDK コンポーネントを決定します |
| ライティング方式は? | ベイク/ミックス/リアルタイム | Android ではベイクライティングを優先します。リアルタイムライティングやシャドウを使用する場合は、各対象デバイスでプロファイリングしてから維持してください |
| ネットワーク同期するオブジェクトはありますか? | なし/物理(Pickup+ObjectSync)/状態(UdonSynced) | Udon スクリプティングを始める前に、同期アーキテクチャを決定します |
設計方針:クエスト優先
ワールドを Android で動作させる必要がある場合は、PC ビルドを調整する前にその制約を決めてください。各ターゲットを個別にテストしてください。
Android ヘッドセットの CPU、GPU、メモリ、熱設計の予算は PC とは異なり、デバイスによっても変わります。
- GPU:リアルタイムライト、シャドウ、オーバードロー、複雑なシェーダーはフレーム時間を大きく左右することがあります
- メモリ:テクスチャとライトマップは、クライアントと限られたシステムメモリを共有します
- 熱:負荷が持続すると、セッション中に利用可能なパフォーマンスが低下することがあります
各ターゲットデバイスを個別に測定してください。PC での結果から Android のパフォーマンスは判断できず、Quest での単一クライアントの結果から特定の PC のフレームレートを予測することもできません。公開する前に Unity Profiler と公式の Android コンテンツ最適化ガイドを使用してください。
「Quest のサポートは後から追加」する形で PC 専用に最適化することは絶対に避けてください。その時点では、ライティング、マテリアル、メッシュ密度がすべて PC 品質に固定されており、Quest への移植にはすべてを再構築する必要があります。
Quest 優先の連鎖 — Quest が必須の場合、後続するすべての判断に制約が引き継がれます。
Quest required? → Yes
├── Shaders: World shaders are unrestricted; prefer mobile-compatible shaders and profile custom ones
├── Lighting: Baked by default; retain realtime effects only after target-device profiling
├── Geometry: Budget approximately 250,000 triangles for the whole world; reduce further when profiling calls for it
├── Materials: Minimize unique materials and draw calls; no fixed world upload limit is documented
├── Audio: Mono, compressed, limited concurrent sources
└── Physics: Simplified colliders, minimal Rigidbodies
SDK バージョン
現在のサポート対象/最終確認済み:SDK 3.10.5
v4.0.0 以降の方針は、最新の安定版 SDK のみを対象とすることです。このリポジトリで確認された後に限り、新しい安定版リリースへサポートを移行します。新しい安定版リリースが自動的にサポート対象になるわけではありません。現在の最終確認済みターゲット:3.10.5。
以下の表には、移行時の参考として機能の導入履歴を残しています。SDK 3.7.1~3.10.4 の項目は履歴情報のみであり、この Skill の現在のサポート対象または検証ターゲットではありません。これはこの Skill のサポート範囲を示すもので、VRChat 自体の SDK ポリシーについて述べるものではありません。参照資料で過去の移行ケースとして明示されている場合を除き、生成される主なサンプルは SDK 3.10.5 を対象とします。
| SDK | 新機能 | 状態 |
|---|---|---|
| 3.7.1 | StringBuilder、Regex、System.Random | 過去の情報 |
| 3.7.4 | Persistence API (PlayerData/PlayerObject) | 過去の情報 |
| 3.7.6 | Multi-platform Build & Publish(PC と Android の同時ビルド) | 過去の情報 |
| 3.8.0 | PhysBone の依存関係ソート、Force Kinematic On Remote、Drone API | 過去の情報 |
| 3.8.1 | パラメーター付きの [NetworkCallable] イベント、Others/Self ターゲット、VRCCameraSettings | 過去の情報 |
| 3.9.0 | Camera Dolly API、Auto Hold の簡略化、VRCCameraSettings の追加(CullingMask、GetCurrentCamera) | 過去の情報 |
| 3.10.0 | Dynamics for Worlds(PhysBones、Contacts、VRC Constraints) | 過去の情報 |
| 3.10.1 | バグ修正と安定性の向上 | 過去の情報 |
| 3.10.2 | EventTiming の拡張、PhysBones の修正、シェーダー時間のグローバル変数 | 過去の情報 |
| 3.10.3 | VRCPlayerApi.isVRCPlus、VRCRaycast(アバター)、Mirror の描画順修正 | 過去の情報 |
| 3.10.4 | VRCTween、ボックス形状の Contacts、Global Avatar PhysBone Colliders、ワールドでの VRCPhysBoneCollider の Udon アクセス、Data Container の容量 API | 過去の情報 |
| 3.10.5 | WorldQualitySettings、Pickup Outline Renderers、Pipeline Manager の検証、書き込み可能な VRCQualitySettings と Assembly Version Defines → UdonSharp Skill | 現行/最終確認済み |
公開には SDK 3.10.5 を使用し、プロジェクトを移行する前に、バージョン依存の API を対応するリリースノートで確認してください。
シーンのセットアップ
VRC_SceneDescriptor(必須)
すべての VRChat ワールドに、正確に 1 つ必要です。
[VRCWorld Prefab]
├── VRC_SceneDescriptor (Required)
├── VRC_PipelineManager (Auto-added)
├── VRCWorldSettings (Optional - movement speed settings)
└── AvatarScalingSettings (Optional - avatar scale limits)
主なプロパティ
| プロパティ | 型 | 説明 | デフォルト |
|---|---|---|---|
| Spawns | Transform[] | スポーンポイントの配列 | Descriptor position |
| Spawn Order | enum | First/Sequential/Random/Demo(First:常に最初のスポーンポイントを使用します。Demo:スポーンポイントをルームスケールの中心にします) | Sequential |
| Spawn Orientation | enum | Default/Align Player With Spawn Point/Align Room With Spawn Point | Default |
| Respawn Height | float | リスポーンする高さ(Y 軸) | -100 |
| Object Behaviour At Respawn | enum | Respawn/Destroy | Respawn |
| Reference Camera | Camera | プレイヤーカメラ設定の参照 | None |
| Forbid User Portals | bool | ユーザーポータルを無効にします | false |
| Voice Falloff Range | float | 音声減衰範囲 | - |
| Interact Passthrough | LayerMask | インタラクトを通過させるレイヤー | Nothing |
| Maximum Capacity | int | プレイヤー数の最大値(上限) | - |
| Recommended Capacity | int | 推奨プレイヤー数(UI) | - |
Reference Camera の使用方法
// Usage:
// 1. Adjust Near/Far clipping (recommended for VR: 0.01 ~ 1000)
// 2. Apply Post Processing effects
// 3. Set background color
// ⚠️ MUST disable the Camera component after configuring — an active Reference Camera
// renders a second viewport. VRChat reads only the camera settings, not its output.
// Assign the configured (disabled) Camera to VRC_SceneDescriptor > Reference Camera.
スポーンポイントの設定
// Spawn points are empty GameObjects assigned to VRC_SceneDescriptor > Spawns array.
// Players enter facing the Z+ direction of the spawn Transform.
// VRChat-specific requirements:
// - At least 2-3 spawn points (for simultaneous joins — single spawn causes overlap)
// - Place slightly above the floor (~0.1m) to avoid floor collision on spawn
// - Keep clear of obstacles (VR player guardian area is larger than their avatar)
// - Account for VR guardian boundaries — desktop player sizes differ from VR
必須設定チェックリスト
□ Exactly one VRCWorld Prefab exists in the scene
□ At least one Transform set in Spawns
□ Respawn Height set to an appropriate value (well below the floor)
□ Reference Camera configured for clipping distances (for VR)
□ Layer/Collision Matrix correctly configured
□ "Setup Layers for VRChat" has been executed
コンポーネント
必ずお読みください:以下の VRC コンポーネントを設定する前に、references/components.md(約 800 行)をお読みください。依存関係の要件や Udon イベントフックは全体に記載されているため、全文を読み込んでください。
読み込まないでください:references/audio-video.md(タスクにオーディオ/ビデオコンポーネントが含まれる場合を除く)、references/lighting.md。
| コンポーネント | 必須要素 | 用途 | SDK |
|---|---|---|---|
| VRC_SceneDescriptor | - | ワールド設定(必須) | - |
| VRC_Pickup | Collider + Rigidbody | つかめるオブジェクト | - |
| VRC_Station | Collider | 着席できる場所 | - |
| VRC_ObjectSync | Rigidbody | Transform/物理演算の自動同期 | - |
| VRC_MirrorReflection | - | ミラー(⚠️ 負荷大) | - |
| VRC_PortalMarker | - | 他のワールドへのポータル | - |
| VRC_SpatialAudioSource | AudioSource | 3D オーディオ | - |
| VRC_UIShape | Canvas (World Space) | Unity UI の操作 | - |
| VRC_AvatarPedestal | - | アバターの表示/切り替え | - |
| VRC_CameraDolly | - | カメラドリー | 3.9+ |
| VRCCameraSettings | None (static API) | Udon からカメラ情報を読み取る | 3.8.1+ |
VRC_ObjectSync と UdonSynced の比較
| シナリオ | VRC_ObjectSync | UdonSynced 変数 |
|---|---|---|
| 投げられるオブジェクト/物理演算 | ✅ 推奨 | ❌ |
| 状態のみ/複雑なロジック | ❌ | ✅ 推奨 |
SDK 3.8.0 以降:
Force Kinematic On Remote— オーナーではないクライアント上で Rigidbody をキネマティックにし、予期しない物理挙動を防ぎます。
レイヤーと衝突
VRChat の予約済みレイヤー
| レイヤー番号 | 名前 | 用途 |
|---|---|---|
| 0 | Default | 一般オブジェクト |
| 9 | Player | リモートプレイヤー |
| 10 | PlayerLocal | ローカルプレイヤー |
| 11 | Environment | 環境(壁、床) |
| 13 | Pickup | つかめるオブジェクト |
| 14 | PickupNoEnvironment | 環境と衝突しないピックアップ |
| 17 | Walkthrough | 通り抜け可能なオブジェクト |
| 18 | MirrorReflection | ミラー反射のみ |
| 22-31 | ユーザーレイヤー | カスタム用途に使用可能 |
レイヤーの設定手順
1. VRChat SDK > Show Control Panel
2. Builder tab
3. Click "Setup Layers for VRChat"
4. Collision Matrix is automatically configured
必ずお読みください:衝突の設定や物理演算のデバッグを行う際は、references/layers.mdをお読みください。Unity のデフォルトの衝突マトリックスは VRChat に適した設定とは異なります。必ず確認してください。
読み込まないでください:references/audio-video.md、references/upload.md。
パフォーマンス
パフォーマンス基準
対応デバイス、代表的なシーン、想定プレイヤー数に基づいて、パフォーマンス目標を設定します。プロファイリングを行う前に、各ビルド対象のフレーム時間またはフレームレートの目標を記録してください。VRChat では、ワールドのアップロードに一律の FPS 閾値は定められていません。
初期予算
| 項目 | 推奨事項 | 理由 |
|---|---|---|
| ミラー | 1 つ、デフォルトで OFF | シーン全体を 2 倍レンダリングします |
| ビデオプレイヤー | 1~2 台を推奨 | デコードのオーバーヘッド。文書化された厳密な上限はありません |
| リアルタイムライティング | デフォルトではベイク | 対象デバイスでプロファイリングを行った後に限り、リアルタイムライトやシャドウを維持します |
| ライトマップ | ベイクして確認 | Android における主要なライティング方式 |
Quest/Android の制限
| コンポーネント | PC | Quest |
|---|---|---|
| Dynamic Bones | ✅ | ❌ 無効 |
| Cloth | ✅ | ❌ 無効 |
| Post-Processing | ✅ | ❌ 無効 |
| Unity Constraints | ✅ | ✅ ワールドで使用可能。コストをプロファイリングしてください |
| リアルタイムライト | ✅ | ⚠️ 負荷が高いため、デバイス上での根拠がある場合に限り使用してください |
パフォーマンス最適化のワークフロー
| ボトルネックの種類 | 主な指標 | 参照 |
|---|---|---|
| CPU バウンド | スクリプト時間が長い、物理演算のオーバーヘッド | performance.md §最適化ワークフロー |
| GPU バウンド | ドローコール、オーバードロー、シェーダーの複雑さ | performance.md §最適化ワークフロー |
| メモリ | VRAM 使用量、テクスチャサイズ、メッシュ数 | performance.md §最適化ワークフロー |
必ずお読みください:最適化する前にperformance.mdを読み込んでください。まず測定し、最も大きなボトルネックを対象にします。また、Quest の最適化についてはreferences/lighting.mdをお読みください。
読み込まないでください:references/audio-video.md、references/upload.md。
ライティング
ベイクドライティング(デフォルト)
✅ Recommended settings:
├── Lightmapper: Progressive GPU
├── Lightmap Resolution: 10-20 texels/unit (PC) / 5-10 (Quest)
├── Light Mode: Baked by default; use Mixed/Realtime only when the effect is necessary and measured
└── Light Probes: Place along player paths
❌ Avoid:
├── Realtime lights (dynamic shadows)
├── High-resolution lightmaps (memory consumption)
└── Excessive Reflection Probes
必ずお読みください:ライトマップの設定やライトプローブの配置を行う際は、references/lighting.mdをお読みください。
読み込まないでください:references/audio-video.md、references/upload.md、references/layers.md。
オーディオとビデオ
VRC_SpatialAudioSource
ワールド内の各 AudioSource に VRC_SpatialAudioSource を追加してください。AudioSource のみの場合、VRChat SDK Build Panel に警告が表示されます。コンパニオンコンポーネントは意図的に追加し、安易に Auto Fix を既定として使用しないでください。また、依頼がない限り、既存の VRC_SpatialAudioSource の値や調整済みの AudioSource カーブを上書きしないでください。
| プロパティ | 説明 | 基準値/安全に保持するための注意事項 |
|---|---|---|
| Gain | 音量ブースト(0~24 dB) | 10 dB が一般的な既定値です。音量を維持するため、警告対策のみの追加では 0 dB を使用してください |
| Near | 減衰開始距離 | サウンドに意図的な近距離音場が必要でない限り、0m にします |
| Far | 減衰終了距離 | 既存の maxDistance または意図した可聴範囲に合わせます。安易に既定値や Auto Fix の範囲を適用しないでください |
| Volumetric Radius | 音源の広がり | 点音源の場合は 0m にします。広がりのある音源では意図的に設定してください |
| Enable Spatialization | 3D 位置設定 | 意図的な 2D/全体音声では false、設定された 3D 音声では true にします |
既存の AudioSource を保持する場合は、volume、spatialBlend、rolloffMode、maxDistance、カスタムカーブを維持し、Gain は 0 dB にしてください。調整済みの 3D ロールオフには Use AudioSource Volume Curve を有効にします。Far は既存の maxDistance または意図した可聴範囲に合わせ、既存の minDistance/Near 値が意図的に設定されていない限り、Near は 0m にしてください。
ビデオプレーヤーの選択
| 機能 | AVPro | Unity Video |
|---|---|---|
| ライブストリーミング | ✅ | ❌ |
| エディタープレビュー | ❌ | ✅ |
| YouTube/Twitch | ✅ | ❌ |
| Quest 対応 | ✅ | ✅ |
必ずお読みください references/audio-video.md:VRC_SpatialAudioSource またはビデオプレーヤーの設定について。
任意:オーディオ/ビデオコンポーネントを接続する場合は references/components.md。
読み込まないでください:references/lighting.md、references/performance.md。
ワールドのアップロード
アップロード手順
1. Check Validation
└── VRChat SDK > Build Panel > Validations
2. Build & Test (local testing)
└── "Build & Test New Build"
└── Supports multi-client testing
3. Upload
└── "Build and Upload"
└── Set Content Warnings
└── Set Capacity
4. Publish settings
└── Configure public/private on the VRChat website
アップロード前チェックリスト
□ VRC_SceneDescriptor × 1
□ Spawns configured
□ Respawn Height appropriate
□ Layer/Collision Matrix verified
□ Light baking complete
□ Mirror default OFF
□ Project-defined frame-time or frame-rate target met in representative scenes and player counts
□ No Validation errors
□ Content Warnings set
□ Capacity set
必ずお読みください:Build & Upload を実行する前に references/upload.md を確認してください。アップロード前チェックリストのすべての項目を先に確認してください。
必ずお読みください:ユーザーから SDK Build Panel の検証、赤/黄/白の警告、Auto Fix、またはコピーされた検証メッセージについて質問された場合は、references/build-validation.md を確認してください。
読み込まないでください:references/audio-video.md、references/lighting.md。
トラブルシューティング
クイックルーター
症状のカテゴリを特定し、該当する参照セクションに移動してください。
| 症状のカテゴリ | よくある原因 | 参照 |
|---|---|---|
| プレイヤーが壁や床をすり抜ける | レイヤーの設定が実行されていない、ジオメトリが Environment(11)に設定されていない | troubleshooting.md §Layer & Collision |
| つかめない/ピックアップが機能しない | Collider、Rigidbody、または VRC_Pickup コンポーネントがない | troubleshooting.md §Component |
| オブジェクトが同期しない/元の位置に戻る | VRC_ObjectSync がない、または所有権が移譲されていない | troubleshooting.md §Networking |
| 座れない/Station をすり抜ける | Collider がない、Station Enter Player Location の調整が必要 | troubleshooting.md §Component |
| ミラーに映らない | Layers のマスクに Player/PlayerLocal/MirrorReflection がない | troubleshooting.md §Component |
| ビルド/アップロードに失敗する | SceneDescriptor がない、スクリプトエラー、レイヤーの警告 | troubleshooting.md §Build |
| パフォーマンスの問題 | ミラーが ON、リアルタイムライト、ライトマップが未ベイク | performance.md |
| エディターでは動作するが VRChat では失敗する | エディターの Play ≠ SDK ランタイム。Build & Test を使用してください | troubleshooting.md §Editor |
| UI が表示されるがクリックできない | Screen Space/Overlay Canvas 上の VRC_UIShape(NEVER #11 を参照) | troubleshooting.md §Editor |
問題の診断時は、references/troubleshooting.md を必ず読み込んでください。トラブルシューティング以外のタスクでは読み込まないでください。
関連スキル
C# スクリプト、ネットワーク同期、UdonSharp イベントの実装には、unity-vrc-udon-sharp スキルを使用してください。
テンプレート(assets/templates/)
一般的な SDK コンポーネントのパターン向けのスターターテンプレートです。リポジトリのチェックでは静的チェックを行います。対象の SDK プロジェクトにインポートし、コンパイルして、使用前に Build & Test を実行してください。Inspector のフィールドを調整し、ワールドに合わせてイベントのスタブを拡張してください。
| テンプレート | 用途 |
|---|---|
VRC_Pickup_Rigidbody.cs | Rigidbody を使用する VRC_Pickup — OnPickup/OnDrop/OnPickupUseDown/OnPickupUseUp イベント、所有権の移譲、オーディオフィードバック |
VRC_Station_Basic.cs | VRC_Station コントローラー — OnStationEntered/OnStationExited イベント、PlayerMobility、強制退出 API |
参考資料
| ファイル | 内容 | おおよその行数 |
|---|---|---|
references/components.md | すべてのコンポーネントの詳細、コンポーネントの許可リスト、Worlds 向け Dynamics、エディター専用の除外(EditorOnly タグ/IEditorOnly) | 800+ |
references/layers.md | レイヤーと衝突 | 230+ |
references/performance.md | パフォーマンスの最適化 | 700+ |
references/lighting.md | ライティング設定 | 400+ |
references/audio-video.md | オーディオとビデオ | 600+ |
references/build-validation.md | SDK 3.10.5 のビルドパネルに表示される赤/黄/白の検証アラート一覧、安全な修正方法、自動修正の副作用 | 180+ |
references/upload.md | アップロード手順 | 300+ |
references/troubleshooting.md | トラブルシューティングガイド | 500+ |
CHEATSHEET.md | クイックリファレンス | 200+ |