![見出し画像](https://assets.st-note.com/production/uploads/images/83677370/rectangle_large_type_2_048bdfab76c4ade0928d626c2cc6ab73.png?width=1200)
【VRChat】Unityアセットストアの注意点・コツなど
※VRChatのアップデート等で記事の内容が古くなった場合は、記事を非公開にする予定です。ご了承ください。
はじめに
今回の記事はVRChatでUnityアセットストアを使ってワールド制作を行いたい人向けの記事です。
せっかく販売されている素敵なアセットを購入しても、VRChatで使えなかったり、折角途中まで作っていたプロジェクトが壊れてしまったりしたら困りますよね?
この記事では初心者が良くハマりやすい罠に関する注意点などを中心的に解説していきたいと思っています。
ワールド制作でUnityアセットストアを利用するときに気を付けること
基本的にVRChatでワールドを作る場合、モデリングスキルがない場合はすでに作られたアセットを利用することになります。
BoothにはVRChatを想定して作成されたアセットが沢山あるため、そこで望みのものが見つかれば理想的です。
しかし、欲しいものが見つからなかった場合、第二の選択肢としてUnityアセットストアを利用するという手があります。
Unityアセットストアでは、Unity上でゲーム作りをするための素材が配布・販売されています。ですが、中にはVRChatで使用できなかったり、最適化が必要だったりするアセットがあります。
今回説明しようと思っていることは以下の通りです。
①超高品質アセットのデメリットについて
②特定のレンダリングパイプラインにむけて作られたアセットについて
③対応するUnityのバージョンについて
④スクリプト依存のアセットについて
⑤Sceneの上書きについて
⑥アセットの保存場所と変更方法について
⑦Occlusion Cullingについて
⑧アセットのImportが上手くいかなかったときに試すことについて
⑨プロジェクトが正常に動かなくなったときの最終手段について
①超高品質アセットのデメリット
Unityアセットストアには、非常に高品質なアセットが存在します。
具体例を挙げるとArchVizProとかですね。多分VRChat内で目にしたことがある人も多いのではないでしょうか。
ですが、この手のアセットは見た目に全力投球しているので、負荷軽減的な面は一切考えられていないというデメリットがあります。
(個人的な見解ですが、背景として画像や動画等に使うのがメインの用途なのではないかと考えています。つまりゲーム内で扱うわけではないので、負荷軽減を考えなくていいってことですね)
つまり、購入しても軽量化とかは自分でやらねばなりません。
軽量化のノウハウがない人は買うべきではないアセットだと思います。
(2024/11/21追記)
じゃあどうやって見分けているの?っていうと、3Dモデルのポリゴン数とかマテリアル数とか書かれている場合があるので、そこら辺を参考にしたりしています。
その手の情報が全く無い場合は、ちょっと労力が必要ですがOverviewの隣のタブにPackage Contentがあるのでフォルダ構成やマテリアルと思しきファイル(.mat)の数を見たりとかですかね。正直運試しっぽいところはあります。
![](https://assets.st-note.com/img/1732166773-vrd14CRHiU3tDYaLXngAOx0p.jpg?width=1200)
②特定のレンダリングパイプラインにむけて作られたアセットについて
レンダリングパイプラインについて、簡単に説明するとオブジェクトを画面に描画するまでに行われる様々な処理群を示しています。
つまり描画方法の基盤ともいえるのですが、Unity側で提供しているレンダリングパイプラインは以下の3つです。
1,「Build-in Render Pipeline」(別名Standard Render Pipeline)
2,「URP」
3,「HDRP」
VRChatでは1の方式が採用されているので、1に対応したアセットを購入する必要があります。違うのを買うとピンク色ばっかりの悪夢のようなSceneが飛び出してきますので注意。
見分け方としては大体説明文に書いてあるので、そこで見分けられます。
あと最近のアセットは親切にRender pipeline compatibilityという項目が用意されていることもあります。
![](https://assets.st-note.com/img/1659058158972-m7hGj6flYX.jpg?width=1200)
③対応するUnityのバージョンについて
対応するUnityのバージョンはアセットのページのここで確認できます。
![](https://assets.st-note.com/img/1659063222829-LtngnBRo8F.jpg?width=1200)
基本的に今のVRChatのUnityバージョンより低い場合はほぼ動きます(自分は動かないケースに当たったことはないです)
問題はVRChatのUnityバージョンより高い場合です。
モデルとかは問題なく使うことが出来るケースもありますが、Unityの標準の機能(例えば地形システムのTerrain等)を使っている場合は、そのアセットのデモSceneを上手く読み込めません。
Unity標準の機能にアップデートが入っているために互換性がなくなってしまっているためです。
基本的には現在のVRChatのUnityバージョン以下のアセットを利用するのが無難だと思います。
④スクリプト依存のアセットについて
スクリプトというのは、簡単に説明するとプログラミング言語を記述したプログラムのファイルです。Unityではプログラムを書いて、ゲームに機能を追加するということが出来ます。
特定のオブジェクトに対して機能を追加する場合は、コンポーネントという形で追加することになります。
ですが、VRChat内では基本的に一部のコンポーネントを除いて、スクリプトは使用が禁止されています(その代わりにUdonが提供されていて、Udonでは制限がありますがプログラムで機能を作れます)
これはVRChatで許可されているコンポーネントのリストです(余談ですが、アバター版もあります)
したがって、アセットストアで面白そうなアセットを見つけても、それがスクリプトによって動作している場合はVRChatで使うことが出来ません。
見分け方としては、アセットの紹介動画や画像の中で、上のホワイトリストにないコンポーネントを付けていると怪しいです。コンポーネント名の後ろに括弧でScriptって書いているやつは確定です。
ただし、最終的にアップロードするときにそのスクリプトが要らないのであれば、それは使えるアセットです。
(要はUnity上で動いて、結果だけ出力できるアセットです。具体例としてはMeshbakerなど)
シェーダーのアセットについても、スクリプトと連携していることがあるので注意が必要です。大抵は動きのあるShaderのケースが多いように見受けられます。
もう一点気を付けなければいけない点として、スクリプトファイルはお互いに干渉して、エラーを起こすことがあります。Consoleの情報を頼りにアセット内の干渉を起こしているスクリプトファイル(○○○○.csって名前のファイル)を削除していきましょう。
Consoleの見方が分からなければ、下の記事を見てください。
スクリプトファイルを消すと、該当のコンポーネントはMissing Scriptになってしまうので、Missing Scriptになったコンポーネント(or ゲームオブジェクト)も削除するといいでしょう。
⑤Sceneの上書きについて
皆さんは、Unityで新プロジェクトを立ち上げてすぐのSceneファイルで編集をしていませんか?そうなのであれば、フォルダやファイル名を変更することをお勧めします。デフォルトだとScenesというフォルダ内にSampleSceneという名前で置いてあります。
![](https://assets.st-note.com/img/1659060925398-qDjHYihzBm.jpg)
実は、Unityアセットストアのアセットの中には同じ場所・同じ名前のままでデモシーンを作っているアセットがあります。
つまり何も考えずにインポートすると、上書きします。
丹精込めて作っていたワールドデータが一瞬で上書きされてしまうわけですね。私は2~3回やらかしています。気を付けてください。
⑥アセットの保存場所と変更方法について
デフォルトだとUnityのアセットストアでDownloadボタンを押したアセットは、Cドライブに保存されます。
つまり沢山アセットを買って、ダウンロードしまくっているとメインドライブを圧迫してパソコンが重くなってしまいます。
『アセットストア シンボリックリンク』で検索すると、記事が出てくるのでそれを参考にしつつ保存場所を変更するといいでしょう。
⑦Occlusion Cullingについて
アセットストアのアセットでワールドを制作していると、たまにワールドのオブジェクトが特定の角度で見えない、といった現象が起こることがあるかもしれません。
軽量化手法の一つとして、Occlusion CullingというのがUnityの標準機能としてあるのですが、上手く使いこなせないとオブジェクトが見えなくなってしまうことがあります。
アセットによっては、独自にこのOcclusion Cullingが設定されているため、アセットのシーンをそのまま利用しようとするとこの現象が起こってしまうことがあります。
なので、必要ないなと感じる場合は、上メニューの[Windows]から[Rendering]→[Occlusion Culling]を選択し、表示されたタブの右下辺りにあるClearボタンを押して、Occlusion Cullingの計算データを消しましょう。
2023/03/07 オクルージョンカリングについて詳しく知りたい人は、記事を書いたので読んでみてください
⑧アセットのImportが上手くいかなかったときに試すことについて
ごく稀にアセットのImportが上手くいかずに、マテリアルがエラーのピンク色でImportされる場合があります。
その場合に試せることとして、インポートしたフォルダを右クリックしてReimportを実行すると、もう一度Importしなおしてくれます。これにより依存関係が正しく処理されてマテリアルが正常に戻るケースがあります。
Reimport Allというのもあるので、間違ってそちらを選ばないように、気を付けて選択してください。名前の通り全てReimportしなおすので、めちゃめちゃ時間がかかります。
⑨プロジェクトが正常に動かなくなったときの最終手段について
プロジェクトがおかしくなってどうしようもないケースというのもあるので、念のために書いておきます。
これは本当に最終手段です。
私はこれで直らなかったら、バックアップから復元したりしています。
プロジェクトファイルのフォルダを出したときにLibraryというフォルダがあります。Unityを閉じた状態で、このフォルダを消してください。
![](https://assets.st-note.com/img/1659167948216-6Ere57hA93.jpg?width=1200)
消したのちに、Unityのプロジェクトを立ち上げようとすると再構成が始まり、かなり長い時間待たされます。ですが、万策尽きた時に試してみると意外と直ることが多いです(体感的に)
(2024/11/21追記)⑩使用できないシェーダーについて
VRChatで使用できないシェーダーとして、Compute Shaderというのがありますので、その文言を見つけたらそのアセットは使用できない可能性が高いです。
またPCVRでは問題ないですが、Quest単体で使用できないシェーダーというのもいくつかあります。
別の私の記事からまとめたものを持ってきました。
軽くまとめると以下の通りです。初心者の方は具体例の部分だけ覚えておくと良いでしょう。
①Geometry(ジオメトリ)シェーダー
具体例:一部の草シェーダーなど(補足:ポリゴンごとの操作やポリゴン自体の増減が出来るので、いわばシェーダーで草を生やしたりができます。したがって『自由に草の形状や本数を変えられます』みたいなのは怪しいです)
理由:QuestのGPU的には使えるはずだが、VRChat側の仕様(ビルド設定?)で使えない模様。
②深度を使うシェーダー
具体例:水や霧などで使われる、奥行きに依存して色や濃さが変わるもの。
理由:Questではプレイヤー視点の深度を有効化する方法が無い。
(非初心者向け補足:プレイヤーのカメラはVRCの制約でスクリプトからアクセスできないので、スクリプトによる深度有効化は出来ない。またPC版で良く行われる影付きリアルタイムライトによる副次効果的な深度有効化も、リアルタイムライトがQuestで使えない設定となっているため不可)
③Grabpassを使用するシェーダー
具体例:水やガラスなどで使われる、奥側に見える景色を歪ませたりぼかしたりする効果を持つもの。
理由:Unityのバグ。2022では直っているらしいので、もしかしたら今は問題ないかもしれません(未検証)
④Tessellation(テッセレーション)シェーダー
具体例:距離に応じてポリゴンを割る機能なので、近づくと凹凸が激しくなるなど。
理由:VRの表示方式であるMultiViewと相性が悪いらしい?詳細は不明(ソース)
①~④は『そのシェーダーの機能が使えない』だけなので、それらの機能を使っていないシェーダーであれば使用可能です。ですので代替となるシェーダーに切り替えるのが良いでしょう。
まとめ
以上、大きいところは大体書いたかなと思いますが、小さい罠も含めると割と無数にあります。書くべきことを思い出した場合は追記します。
ここまで書いた内容を一切知らずにUnityアセットストアに手を出した場合を考えてほしいのですけど、結構悲惨な目にあいがちです。作業時のバックアップがないと最悪の場合作りなおしです。
UnityアセットストアのアセットをVRChatに持ってくるには、軽量化ノウハウや問題対処能力など色々求められるものが多いです。
ここまで読ませておいてあれですが、個人的なワールド制作方法のおすすめはboothですでにセットアップされている販売ワールドを改変するのが一番無難で安全だと思います。
とはいえ、欲しいものがアセットストアにしかない場合は仕方ないと思います。その場合は頑張ってください。ちなみにセール時に買うとかなりお得です。
(2022/11/12追記 セールについて記載した記事を出しました)
軽量化ノウハウについての記事はすでに結構あるので、自分の中では優先度低めですがいずれ書くつもりです(他の記事と内容が被らなければ)
Unityアセットストアの罠を潜り抜けて、素敵なワールドを作ってもらえたら幸いです。ではでは~。