作っている途中で、必ず何かが動かなくなります。掴めない、真っ暗、ピンク色、同期しない。
困ったときに時間を食うのは、直す作業ではありません。どこを見ればいいか分からない時間 です。
この記事は、症状から原因を引くための一覧です。直し方は各記事に渡します。 ここは入口として使ってください。
この記事でわかること
- よくある10の症状と、その原因の候補
- 切り分けのための3つの質問
- 原因が絞れたあと、読むべき記事
実践:3つの質問で切り分ける
一覧を引く前に、3つの質問 に答えてください。ここで探す範囲が半分以下になります。

| 質問 | イエスなら | ノーなら |
|---|---|---|
| 1. 自分の画面でも起きているか | 設定かコードの問題 | 同期の問題 |
| 2. UnityのPlayモードでも起きているか | シーンかコードの問題 | ビルドか端末の問題 |
| 3. 前は動いていたか | 直前に変えた場所が原因 | 最初から間違っている |
実際にやってみます。「押しても扉が開かない」 という症状で追ってみましょう。
質問1:自分の画面でも開かないか
友達の画面だけ開かないなら、扉の作り自体は動いています。 見るのは同期の側です。
自分の画面でも開かないなら、同期は関係ありません。同期のコードを読むのは、ここでは時間の無駄です。
質問2:Playモードでも開かないか
UnityのPlayモードで押してみます。ここでも開かないなら、シーンかコードの問題です。
Playモードでは開くのに、VRChatの中では開かない。 この場合は、ビルドの設定か、そのプラットフォームでの制限を疑います。
質問3:前は開いていたか
昨日まで開いていたなら、そのあとに変えたところが原因です。 心当たりを逆順にたどります。
一度も開いたことがないなら、割り当てや設定が最初から抜けている可能性が高くなります。
答え合わせをする
3つの答えが「自分の画面でも開かない・Playモードでも開かない・一度も開いたことがない」なら、同期の問題ではなく、設定の抜けです。
ここまで絞れたら、次の ボタンを押しても何も起きない を上から見ていけば、たいてい当たります。
質問に答えるだけで、読むべき節が決まります。 これがこの記事の使い方です。
作っているときの症状

オブジェクトを掴めない
- Colliderがない、または小さすぎる。VRC Pickupがあっても、手が当たる形がないと掴めません
- VRC Pickupがない、またはPickupableがオフ。Rigidbodyだけでは掴めません
- Is Triggerがオンになっている。すり抜ける判定になっています
部屋が真っ暗、または焼いても暗い
- ライトそのものが効いていない。Directional Lightがない、Intensityが
0、色が黒 - 焼く対象になっていない。床や壁が Contribute GI になっていないか、一度も焼いていない
- 環境光が足りない。Skyboxが暗い、Intensity Multiplierが低い
→ ライトを焼く / 空と霧で雰囲気を決める
マテリアルがピンク色になる
- シェー ダーが入っていない。使っているシェーダーのパッケージが未導入
- 描画の仕組みが違う。URPやHDRP向けのシェーダーを使っている
- その端末で使えない。PC用シェーダーをAndroid版で開いている
→ マテリアルとテクスチャ / Quest・スマホにも対応する
床をすり抜けて落ちる
- 床にColliderがない。Planeを削って自作したときに起きがちです
- Is Triggerがオンになっている。当たらない判定になっています
- スポーン地点が床にめり込んでいる。少し上に置き直します
→ 当たり判定の基本 / 落下したら復帰させる
動きが重い、カクつく
- どこが重いかを測っていない。描画・処理・容量・同期のどれかで直し方が違います
- 半透明が画面を覆っている。パーティクルや大きな透明の板
- 物理が眠っていない。置いた小物が震え続けています
動かないときの症状
ボタンを押しても何も起きない
- Colliderがない。空のオブジェクトにスクリプトを付けたときに起きます
- Udon Behaviourが割り当たっていない。Program Sourceが空になっています
- 自分で書いた
ifで止まっている。条件を満たしていません
自分の画面では動くのに、相手の画面で動かない
- 所有権を取っていない。同期変数を書いても送られません。エラーは出ません
- 同期モードが
None、またはRequestSerialization()を呼んでいない - ローカルの処理だけで動かしている。Animatorを直接触っているだけになっています
→ 所有権を理解する / ネットワーク同期入門
あとから入った人だけ状態が違う
Start()で状態を反映していない。届いた値を見た目に出す処理が抜けています- ネットワークイベントだけで伝えている。イベントはあとから来た人に届きません
- 値を持たずに、変化だけを送っている。いまの状態を変数で持つ必要があります
人によって結果が違う
- 各自が乱数を引いている。振るのは1人にして、結果を配ります
- 各自の物理計算に頼っている。転がり方は端末ごとに違います
- 時刻を各自のパソコンで測っている。サーバー時刻を使います
→ 同期するサイコロ
音が聞こえない
- Play On Awakeがオフのまま、または再生する処理が呼ばれていない
- Spatial Blendが3Dで、距離が離れすぎている
- VRC Spatial Audio Sourceの設定で、届く距離が短すぎる
→ BGMと空間音響
公開まわりの症状
アップロードできない
- Consoleに赤いエラーが出ている。コンパイルが通っていないと上げられません
- 必要なものが足りない。
VRCWorldがない、スポーン地点が設定されていない - 容量が上限を超えている。テクスチャを小さくします
→ ワールドをアップロードする / 重さを測る
アップロードしたワールドに入れない、読み込みが終わらない
- 容量が大きすぎる。読み込みに時間がかかっています
- 前のビルドが残っている。アップロードし直します
- 端末に合ったビルドがない。Quest向けを上げていないと、Questからは入れません
Questで見た目が違う、または入れない
- Android版を上げていない。同じBlueprint IDで、Android向けにも上げる必要があります
- リアルタイムライトが残っている。焼いていないと真っ暗になります
- 対応していないシェーダーを使っている。ピンクになるか、置き換えられます
更新したのに反映されない
- いま入っている人には反映されません。入り直すと新しい版になります
- Blueprint IDが変わっている。別のワールドとして上がっています
- ビルドし忘れている。保存だけでは反映されません
おまけ:先に知っておくと良いこと
- 上から順に見る: 各症状の原因は、よくある順に並べてあります。多くの場合、最初の1つか2つで当たります
- 1つずつ試す: 3か所まとめて直すと、どれが効いたか分かりません。1つ変えて、確かめて、次へ進みます
- エラーが出るのはありがたい: 何も言わずに動かないほうが厄介です。Consoleに何か出ていれば、そこが手がかりです
- 一覧にないときは入口を確かめる: 処理の先頭にログを1行置いて、そこまで届いているかを見ます。届いていないなら設定、届いているならコードです
- 同じ症状を2回踏んだらメモする: 自分がよく踏むものは決まっています。3つほど書き留めておくと、 次から早く直せます
まとめ
困ったときは、探す範囲を先に狭めます。
- 自分の画面でも起きているか。ノーなら同期
- Playモードでも起きているか。ノーならビルドか端末
- 前は動いていたか。イエスなら直前に変えた場所
- 絞れたら、この記事の該当する節を上から見る
最初の問いかけは、「これは同期の問題か、そうでないか」 です。ここを分けるだけで、読むコードの量が半分になります。
追い方そのものを身につけるなら 動かないときの直し方、重さの原因を探すなら 重さを測る へ進んでください。