VRCSDKトラブルシューティング

ここはVRChatSDKを使ったアバターおよびワールドアップロードのトラブルシューティングページです。

特定のワードを検索したい場合はCtrl+Fでブラウザの検索機能を使用します。


共通エラー系

VRChat SDKタブに「Show Control Panel」が表示されない

殆どの場合「VRChatSDK」が壊れています。
一番最初に導入する「VRCSDK-xxxx.xx.xx.xx.xx_Public.unitypackage」をもう一度インポートすると治る場合があります。


アップロード終了後に「Error saving blueprint.」と表示される

アップロードしようとしているアバターやワールドに設定されている「Blueprint ID」が、自身のアカウントに紐づけられているBlueprint IDと一致しない(存在しない)ために発生します。

購入したアバターにBlueprint IDが残っていたり(消し忘れ)、VRCSDKのContent Managerからアバターやワールドを消したにもかかわらずBlueprint IDがDetachされず存在しないIDのままアップロードしようとした際によく起こります。

新しくアバターをアップロードする際はこのBlueprint IDが空になっていることを確認してからアップロードするようにしましょう。

アバターの場合はPrefabに、ワールドの場合はVRC_Worldにそれぞれ「Pipeline Manager」コンポーネントがあります。


アバターアップロード

「This avatar has mipmapped textures without ‘Streaming Mip Maps’ enabled」と表示される

Unity2017時代にはテクスチャに「Streaming Mip Maps」という項目がなく、Unity2018にて新設されたため古いアバターをアップロードしようとするとほぼ必ず発生するエラーです。

臆することなく「Auto Fix」で大丈夫な場合もありますが、アバターの解説でAuto Fix以外の対処法が記載されていた場合はそちらに従いましょう。


「You are trying to replace or create a Prefab from the instance ‘***’ that references a missing script. This is not allowed. Please change the script or remove it from the GameObject.」とエラーが出てアップロード画面に移行しない

「Build & Publish」ボタンを押してもうんともすんとも言わない場合がありますが、画面下のConsoleに赤い文字でエラーが出ているとビルド画面(アップロード画面)に移行しません。

タイトルのように「missing script」と書かれていた場合、アップロードしようとしているアバターに、壊れたコンポーネントが“存在”しています。

良く起こるのは「Dynamic Bone」のインポートをせずアバターをインポートした場合にDynamic Boneのコンポーネントが「Missing (Mono Script)」となってしまいアップロードできなくなります。

アップロードするにはこの「Missing」となっているコンポーネントを「すべて」取り除く必要があります。が、何十個も手動で行うのは手間なので「Missing Remover」というワンタッチで「Missing」となっているコンポーネントを削除してくれるツールがありますので、そちらを使うと便利です。

Missing Remover」の使い方は「アバター導入方法 Step.4」にて解説していますのでそちらもご確認ください。


アバターがピンク色になる

アバターの導入で、アバターのUnitypackageをインポートする前に指定されたシェーダーをインポートしなかった(忘れた)場合に起こります。

VRChat対応アバターでよく使われる事前インポートが必要なシェーダー例

画像の場合、「ロポリこん」のUnitypackageをインポートする前に「ユニティちゃんトゥーンシェーダー2.0(UTS2)」のインポートが必要だがシェーダーをインポートする前に「ロポリこん」のUnitypackageをインポートしてしまったため、「UTS2」のシェーダーを参照しようとして存在しなかっためシェーダー(マテリアル)がエラーとなっています。

シェーダーエラーとなっている例。通称「マテリアルエラー」
「Hidden/InternalErrorShader」と表示され真っピンクになる。

この場合、事前にインポートが推奨されているシェーダーをインポートした後に再度アバターのUnitypackageをインポートすればほとんどの場合、治ります。


The following component types are found on the Avatar and will be removed by the client: XXX

VRChatにアップロード出来るものは「ホワイトリスト方式」で決まっています。
そのため、ホワイトリストに載っていないスクリプトやコンポーネントが入っているとアップロード出来ません。

ただし最後のコンポーネント名が「PipelineSaver」となっている場合は無視して構いません(アップロードに必要なコンポーネントのため)。

アップロードに成功したはずなのにVRChat上で表示されない

Unity上で「Update Complete!」と表示されアップロード出来ているにも関わらず、VRChatの「My Collections」タブが表示されない、または「My Collections」タブにアップロードしたアバター表示されない場合があります。

その殆どが「VRCSDKで指定されたUnityのバージョンを使用していない」場合に起きます。

アバターをアップロードしたUnityのバージョンと、VRChat公式ドキュメントの「Current Unity Virsion」で記載されているバージョンが一致しているか確認してみてください。


用語集

Blueprint ID (ブループリント ID)

アバターやワールドを識別するための一意の(ユニークな)ID。
これを管理しているのが「Pipeline Manager(パイプライン マネージャー)」。


ベイク(Bake)

ワールドのライティングを焼く(Bakeする)こと。
VRChatではリアルタイムライトを同時に4つまでしか視界に表示できないためそれ以上表示される場合は消えてしまう。
またドローコールを減らすために「オクルージョンカリング」と並んでワールドの軽量化に必要な技術の1つでもある。


オクルージョンカリング(Occlusion Culling)

簡単に言うと「見えない部分は描画しないようにする」設定のこと。
これを設定すると、遮蔽物等で奥が見えない部分は描画されないためドローコールの大量削減に一役買う。


ドローコール(Draw Call)/バッチ(Batch)

簡単に言えば「モノを画面上に描写する」ことです。
VRChatだけでなく他の3Dグラフィック系全般に言えることですが、このドローコールが増えるとGPUの負荷が増えるため画面の描画にラグが生じたりします。
VRChatで簡単に削減する方法は、「動かないアイテムは全てStaticにチェックを入れる」だけです。もっと厳密な削減方法もありますが、これを入れるか入れないかでかなり変わってきます。