Unity TopDownEngine URP切替後のピンク色画像の対策

Unity見下ろし型ゲーム作成の強力な支援アセット TopDownEngine では、 PC やコンシューマーゲーム機、スマートフォンと様々なモバイルに最適化された、新しい標準になった描画処理機能 URP に対応させる手順が公式ガイドで案内されています。

今回は、TopDownEngine のデモシーンのひとつ KoalaDungeon を URP 対応後、プレイ中の攻撃のエフェクト画像の一部がピンク色(正確にはシェーダーエラーを表すマゼンタ色)に塗りつぶされている問題の対策をします。

前回の記事

以下の2つの記事では、TopDownEngine 公式の URP 使用ガイドHow to install the TopDown Engine」に沿って、TopDownEngine のサンプルゲームを URP 用に切り替える設定手順を紹介しました。
これにより、 URP 切替後一部表示されなかった UI・マップ・キャラクターなどのすべての要素表示されるようになりました。

しかし、プレイしてみると銃で攻撃をした際のエフェクト画像の一部がピンク色になっていました。

KoalaDungeon URPに切り替えて公式ガイドの手順で設定した後プレイすると弾丸がピンク色に塗りつぶされています.

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 に対応しないシェーダーが画像を表示するマテリアルに設定されていて、シェーダーに関するエラーが多数表示されました。

KoalaDungeon 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
  • BiRP シェーダを使用しているすべてのマテリアルを選択します (通常は、Demos/Loft3D/materials の下にあるマテリアル)
  • まだ標準シェーダーを使用していない場合は、インスペクターの上部でシェーダーを標準に設定します
  • 次に、[編集] > [レンダリング] > [マテリアル] > [選択した組み込みマテリアルを URP に変換] に移動します。BiRP ほど見栄えはよくありませんが、デモを十分に楽しむことができます。
  • 変換したいピンク色のマテリアルに対して操作を繰り返します
How to install the TopDown Engine | TopDown Engine Documentation と Google 翻訳

Demos/Loft3D/Materials フォルダ内のマテリアルアセットを選択して Inspector ウィンドウで確認するとプレビューがマゼンタ色(エラー色)で表示されているものが多数あります。
※ピンク色と書いていましたが「ビルトインシェーダーをユニバーサルレンダーパイプラインへ移行する | Unity Blog」によるとマゼンタ色が正しいようです。

それらのシェーダーは Standard がほとんどですが、1 個は Particles/Standard Surface でした。

TopDownEngine URP の設定に切り替えると Loft2D のマテリアルは Particles Standard Surface と他は全て Standard シェーダでした.

それらのマゼンタ色でプレビューされるマテリアルアセットを選択します。
※複数選択で一括変換もできます。

TopDownEngine Demos フォルダ内の各 Materials フォルダにはプレビューでピンク色に表示される Standard シェーダーのマテリアルなどがありました.

選択した状態で、メニュー「Edit」→「Rendering」→「Materials」→「Convert Selected Built-in Materials to URP」を選択します。

TopDownEngine Demos フォルダ内の各 Materials フォルダのピンク色のマテリアルを単一複数で選択してConvert Selected Builtin Matterials to URPを実行します..

マテリアルの上書きの前にバックアップを推奨するダイアログが表示されます。
上書きして問題が無ければ Proceed ボタンを押します。

TopDownEngine Convert Selected Builtin Matterials to URPを実行する前に確認ダイアログが表示されるので Proceed を選びます...

Material Upgrader
The upgrade will overwrite 1 selected material. Make sure to have a project backup before proceeding.
Proceed

マテリアルアップグレーダー
アップグレードにより、選択した 1 つのマテリアルが上書きされます。続行する前に、必ずプロジェクトのバックアップを作成してください。
進む

Convert Selected Built-in Materials to URP 実行前の確認ダイアログの文章と Google 翻訳

「Convert Selected Built-in Materials to URP」を実行後、シェーダーは Universal Render Pipeline/Lit に変わり、マテリアルのプレビューがマゼンタ(エラー)色から白色に変わりました

TopDownEngine Convert Selected Builtin Matterials to URPを実行するとマテリアルのシェーダがUniversalRenderPipeline Lit に変わり白色に変わりました...

KoalaDungeon のマテリアルを URP 向けに変換

公式ガイドに沿って デモシーン KoalaDungeon を含む Koala2D のマテリアルもピンク色(シェーダーエラー)になっているものを全て前述の手順で変換しました。

TopDownEngine Convert Selected Builtin Matterials to URPをKoala2D内のMaterials のピンク色表示のすべてのマテリアルに実行しました...

しかし、銃のプレハブ KoalaRifle を選択して、Scene ウィンドウで MuzzleFlare ゲームオブジェクト(パーティクルシステム)を再生すると、まだ一部ピンク色で表示されます。

以下は再生ボタンを押して Game ウィンドウでプレイした際の射撃シーンです。

KoalaRifle プレハブを開き、 Scene ウィンドウで MuzzleFlare ゲームオブジェクトの Particle System を再生した映像です。

一部、ピンク色(シェーダーエラー時のマゼンタ色)の Particle が表示されています。

KoalaDungeonURP KoalaRifle の MuzzleFlare 内のパーティクルシステムの一部がピンク(エラー)色です...

MuzzleFlare ゲームオブジェクトには下位に 3 個の Particle SyStem のゲームオブジェクトがあります。
ひとつずつ非アクティブに変えて映像の差分から、先ほどのピンク色の Particle を出す Particle System を探すと SideParticles ゲームオブジェクトでした。
それを選択して Inspector ウィンドウでマテリアルのプレビューを見るとピンク色です。

KoalaDungeonURP KoalaRifle の MuzzleFlare 内のSideParticlesのマテリアルのひとつがエラー色でした....

KoalaDungeon では先ほど紹介した Loft3D のマテリアルを一部使っていることがわかりました。
そしてその Loft3D のマテリアル LoftMuzzleFlare が KoalaRifle の射撃時にピンク色が表示される原因であることがわかりました。

先ほどは例として公式ガイドに従い Loft3D のマテリアルをひとつ URP 用に変換しましたが、そのフォルダ内の他の全てのピンク色のマテリアルを URP 用に一括変換します。

KoalaDungeonURP Loft3D のエラー色のマテリアル8個を複数選択してURP用に変換します...

プレビューのピンク色(シェーダーエラー時のマゼンタ色)から別の色に変わりました

テスト

再び KoalaRifle プレハブを開いて MuzzleFlare ゲームオブジェクトを選択して Scene ウィンドウで Particle System を再生すると、ピンク色(シェーダーエラー時のマゼンタ色)の Particle が消えました

再生ボタンを押した Game ウィンドウでも同様にピンク色の Particle は消えました

KoalaRifle URP 用にカメラやキャンバスを変えるとピンク色で表示されていた粒子が別の色で表示されました.

まとめ

今回は、Unity見下ろし型ゲーム作成の強力な支援アセット TopDownEngine のデモシーンのひとつ KoalaDungeon を URP 対応後、プレイ中の攻撃のエフェクト画像の一部がピンク色(正確にはシェーダーエラーを表すマゼンタ色)に塗りつぶされている問題の対策をしました。

参照サイト Thank You!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました