Unity の見下ろし型ゲーム作成の強力な支援アセット TopDownEngine では、 PC やコンシューマーゲーム機、スマートフォンと様々なモバイルに最適化された、新しい標準になった描画処理機能 URP に対応させる手順が公式ガイドで案内されています。
今回は、TopDownEngine のデモシーンのひとつ KoalaDungeon を URP 対応後、プレイ中の攻撃のエフェクト画像の一部がピンク色(正確にはシェーダーエラーを表すマゼンタ色)に塗りつぶされている問題の対策をします。
前回の記事
以下の2つの記事では、TopDownEngine 公式の URP 使用ガイド「How to install the TopDown Engine」に沿って、TopDownEngine のサンプルゲームを URP 用に切り替える設定手順を紹介しました。
これにより、 URP 切替後に一部表示されなかった UI・マップ・キャラクターなどのすべての要素が表示されるようになりました。
しかし、プレイしてみると銃で攻撃をした際のエフェクト画像の一部がピンク色になっていました。
URP に変更した後のピンク色の塗りつぶし画像への対処
TopDownEngine の公式ガイドの「How to install the TopDown Engine | TopDown Engine Documentation(some-of-my-materials-are-all-pink)」を参考に、URP へ切り替えた後、一部の画像がピンク色に塗りつぶされる問題への対処を行います。
公式の説明
公式によると一部のカスタムシェーダー(BiRP)を割り当てている画像が、 URP に対応していないためにピンク色に表示されるようです。
While most of the materials used in the engine’s demos will display fine on all RPs, some of the demos use custom shaders, and these will break in HDRP or URP. Thankfully, you can convert them fairly easily, like so :
エンジンのデモで使用されているマテリアルのほとんどはすべての RP で問題なく表示されますが、一部のデモではカスタム シェーダが使用されており、これらは HDRP または URP で壊れます。ありがたいことに、次のようにかなり簡単に変換できます。
How to install the TopDown Engine | TopDown Engine Documentation と Google 翻訳
しかし、BiRP というアセットは見つかりませんでした。
また、 Materials フォルダを見ると Inspector ウィンドウのプレビューでピンク色になっているものが複数あり、Standard シェーダもありました。
特にシェーダーの種類にこだわらず、プレビューでピンク色で表示されるものについて対処します。
コンソールに表示されたシェーダーのエラーログ
エディタでプレイした後にコンソールを見ると、公式で述べているように URP に対応しないシェーダーが画像を表示するマテリアルに設定されていて、シェーダーに関するエラーが多数表示されました。
Shader properties can’t be added to this global property sheet. Trying to add _BackgroundTexture_HDR (type 2 count 1)
上記エラーログの一部のコピー
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&)
KoalaDungeon で使われているマテリアルの URP 対応
公式ガイドによると Demos/Loft2D/Materials 内のマテリアルでマゼンタ色(エラー色)のプレビューのマテリアルを Unity の機能で UPR 用に変換できます。
- select all materials that are using a BiRP shader (typically, the materials under Demos/Loft3D/Materials)
- if they’re not already using the Standard shader, in their inspector, at the top, set their shader to Standard
- then, go Edit > Rendering > Materials > Convert Selected Built-In Materials to URP They won’t look just as good as they would have in BiRP, but will let you enjoy the demo just fine
- repeat the operation for any pink material you want to convert
How to install the TopDown Engine | TopDown Engine Documentation と Google 翻訳
- BiRP シェーダを使用しているすべてのマテリアルを選択します (通常は、Demos/Loft3D/materials の下にあるマテリアル)
- まだ標準シェーダーを使用していない場合は、インスペクターの上部でシェーダーを標準に設定します
- 次に、[編集] > [レンダリング] > [マテリアル] > [選択した組み込みマテリアルを URP に変換] に移動します。BiRP ほど見栄えはよくありませんが、デモを十分に楽しむことができます。
- 変換したいピンク色のマテリアルに対して操作を繰り返します
Demos/Loft3D/Materials フォルダ内のマテリアルアセットを選択して Inspector ウィンドウで確認するとプレビューがマゼンタ色(エラー色)で表示されているものが多数あります。
※ピンク色と書いていましたが「ビルトインシェーダーをユニバーサルレンダーパイプラインへ移行する | Unity Blog」によるとマゼンタ色が正しいようです。
それらのシェーダーは Standard がほとんどですが、1 個は Particles/Standard Surface でした。
それらのマゼンタ色でプレビューされるマテリアルアセットを選択します。
※複数選択で一括変換もできます。
選択した状態で、メニュー「Edit」→「Rendering」→「Materials」→「Convert Selected Built-in Materials to URP」を選択します。
マテリアルの上書きの前にバックアップを推奨するダイアログが表示されます。
上書きして問題が無ければ Proceed ボタンを押します。
Material Upgrader
The upgrade will overwrite 1 selected material. Make sure to have a project backup before proceeding.
Proceedマテリアルアップグレーダー
Convert Selected Built-in Materials to URP 実行前の確認ダイアログの文章と Google 翻訳
アップグレードにより、選択した 1 つのマテリアルが上書きされます。続行する前に、必ずプロジェクトのバックアップを作成してください。
進む
「Convert Selected Built-in Materials to URP」を実行後、シェーダーは Universal Render Pipeline/Lit に変わり、マテリアルのプレビューがマゼンタ(エラー)色から白色に変わりました。
KoalaDungeon のマテリアルを URP 向けに変換
公式ガイドに沿って デモシーン KoalaDungeon を含む Koala2D のマテリアルもピンク色(シェーダーエラー)になっているものを全て前述の手順で変換しました。
しかし、銃のプレハブ KoalaRifle を選択して、Scene ウィンドウで MuzzleFlare ゲームオブジェクト(パーティクルシステム)を再生すると、まだ一部ピンク色で表示されます。
以下は再生ボタンを押して Game ウィンドウでプレイした際の射撃シーンです。
KoalaRifle プレハブを開き、 Scene ウィンドウで MuzzleFlare ゲームオブジェクトの Particle System を再生した映像です。
一部、ピンク色(シェーダーエラー時のマゼンタ色)の Particle が表示されています。
MuzzleFlare ゲームオブジェクトには下位に 3 個の Particle SyStem のゲームオブジェクトがあります。
ひとつずつ非アクティブに変えて映像の差分から、先ほどのピンク色の Particle を出す Particle System を探すと SideParticles ゲームオブジェクトでした。
それを選択して Inspector ウィンドウでマテリアルのプレビューを見るとピンク色です。
KoalaDungeon では先ほど紹介した Loft3D のマテリアルを一部使っていることがわかりました。
そしてその Loft3D のマテリアル LoftMuzzleFlare が KoalaRifle の射撃時にピンク色が表示される原因であることがわかりました。
先ほどは例として公式ガイドに従い Loft3D のマテリアルをひとつ URP 用に変換しましたが、そのフォルダ内の他の全てのピンク色のマテリアルを URP 用に一括変換します。
プレビューのピンク色(シェーダーエラー時のマゼンタ色)から別の色に変わりました。
テスト
再び KoalaRifle プレハブを開いて MuzzleFlare ゲームオブジェクトを選択して Scene ウィンドウで Particle System を再生すると、ピンク色(シェーダーエラー時のマゼンタ色)の Particle が消えました。
再生ボタンを押した Game ウィンドウでも同様にピンク色の Particle は消えました。
まとめ
今回は、Unity の見下ろし型ゲーム作成の強力な支援アセット TopDownEngine のデモシーンのひとつ KoalaDungeon を URP 対応後、プレイ中の攻撃のエフェクト画像の一部がピンク色(正確にはシェーダーエラーを表すマゼンタ色)に塗りつぶされている問題の対策をしました。
参照サイト Thank You!
- Unity のリアルタイム開発プラットフォーム | 2D/3D、VR/AR エンジン
- Introduction to the TopDown Engine | TopDown Engine Documentation
- How to install the TopDown Engine | TopDown Engine Documentation(importing-the-asset-in-a-urp-project)
- How to install the TopDown Engine | TopDown Engine Documentation(some-of-my-materials-are-all-pink)
- TopDown Engine | システム | Unity Asset Store
- URP | Unity Learning Materials
記事一覧 → Compota-Soft-Press
コメント