バッテラが如く

プログラミングしましょ!

【Unity】ビルトインのプロジェクトを後からURPにコンバートする方法

Unity (2021.3.2f1)

はじめに

ビルトインのプロジェクトをURPに変換する作業をしたので内容を共有したいと思います。

URPとは?

レンダリングパイプラインが変わります。。といってもなんのこっちゃという話ですよね。公式に解説動画が上がっていたのでそれが一番分かりやすかったです。

www.youtube.com

↑を見るとお分かりなのですが、従来のを「ビルトイン」といい、そこからの進化版が「URP」「HDRP」という位置付けになります。

描画パフォーマンスもビルトインより上がるのと公式が推していることもあるので、早めに切り替えて慣れておいた方がいいのかなと個人的には思いました。

今回やりたい事

UnityHubだとプロジェクト新規作成時は「ビルドイン」「URP」「HDRP」を選択できるようになっています。

新規プロジェクト作成時にそれぞれの環境に応じてプロジェクトが最適化されます。

なんですが、

自分は「URP」の存在を知らなかったのでいつも「ビルトイン」を選んでたわけです。

そして途中から別の環境に変えるというのはUnityHubでやることはできず、Unity内でコンバート作業が必要となるわけです。

さらにURPにバージョンの概念がありまして、

今回その作業をやっていこうといお話でありました!

UlRPパッケージをインストール

パッケージをインストールする必要があるのでそれをやります。

  • Windows > PackageManager を開く
  • Unity Registry に切り替え
  • Universal RP を選択
  • Install をクリック

あとURPのパッケージのバージョンをちゃんと確認しておきましょう。

このバージョン値が変わると手順も変わります。URP12以前とそれ以降でだいぶ違うようです。

今回はUPR12というバージョンでの手順となりますので宜しくお願いします。

URP環境構築

まずURP Assetというやつを作る必要があります。

CreateRenderingURP Asset(with Universal Renderer)をクリック

※2D用なら (with 2D Renderer)というのを使います。

2つファイル生成されますので、適当に名前をつけてあげます。

自分は「URPA」と「URP_Renderer」にしました。

次はファイルをプロジェクトに適用する作業していきます。

EditProject Settingsを開きます

Graphicsのタブを開きます。

Scritable Redner Pipeline Settingsに先ほど作成した「URPA」をセットします。

Qualityのタブを開きます。

同じに用にScritable Redner Pipeline Settingsに先ほど作成した「URPA」をセットします。

↑レベルごとにセットする必要があります。この部分をクリックするとレベルの切り替えができるので全部に同じものをセットします。

これでプロジェクトがURP用に切り替わりました。

ビルトインのマテリアルをURP用に変換

URPに切り替わると今まで使えてたマテリアルは使えなくなります。

ヒエラルキーに配置したゲームオブジェクトはマテリアルを失うためピンク色になってると思います。

で、ここからマテリアルをURP用にコンバートしていく作業が始まります。

それをするにはマテリアルを選択してあげる必要があります。選択するには普通にマテリアルを左クリックするだけ。

その状態で Edit → Rendering → Material → Convert Selected Built-in Materials to URPと実行します。

ダイアログが表示されるので Proceed をクリックします。

これで任務完了です!

これでうまくいく人はそれで終わりでいいのですが、そうならない人は以降の項目を参考にしてみてください。

標準マテリアルは「Lit」に置き換える

ビルトインの標準マテリアル(Default-Material)をURPにコンバートすることはできるのですが、次回起動時に変換前の状態に戻ってしまいます。

なのでコンバートではなくURPの標準マテリアルに付け替えてあげます。

URPの標準マテリアルは「Lit」というやつなのでこれに変えます。

変更する手順としては、マテリアルを選択 → 目のアイコン押す → Litで検索 → Lit を選択

URPのデフォルトマテリアルは白ではなくグレーっぽいやつになりますね。

ShaderGraphで作ったシェーダーをURPでも使えるようにする

ShaderGraphのシェーダーはコンバートできないので、別途対応が必要でした。

以下記事でやってみたので参考にしてください。

www.m2game.net

うまくいかなかったこと

Render Pipeline Converterがうまく機能しない

他サイトだとこれを使った方法が書かれているのだけど、
実際にやってみたら自分の環境だとうまく変換されずエラーになりまくったので断念しました。
本来これだと全自動で変換できるみたいだけど。。

カスタムシェーダー(自作)はコンバートできない

自前で作ったシェーダーもしくはアセットストアで手に入れたシェーダーは大体ビルトイン用になっていてURPで使う事ができません。

コンバートがうまくいかないやつは大体これです。

自前で作ったシェーダであればURPの記法に従ってリメイクしてあげればいいのですが、他者が作ってる場合はコードを理解するのが難しいのでそう簡単にいかないですねー。

一応購入したアセットにもよりますがアセットストアの概要欄とかにURPでの対応方法が書かれていることがあったりするので、それを見て対応するしかないと思います。

私はシェーダーの知識がないので諦めました。