ボクステ公式ブログ

[Unity6.2]Prefab編集中スプライトの表示が真っ黒の原因[2D/URP]
以下に述べる内容は、Unity6.2(Ver.6000.2.7f2)の2D/Universal Render Pipeline(UniversalRP または URP) プロジェクトについてものです。別バージョンではメニュー内容等が異なります。
[不具合の前提]
SpriteRenderer(スプライトレンダラー)を含むPrefab(プレハブ)を編集中モードにします。
※Assets内のPrefabオブジェクトをダブルクリックしたりヒエラルキーに置いたPrefabの右にある>マークをクリックしたりするとこのモードになります。
今回の不具合は、PrefabのSpriteRenderer内Sprite欄に画像がセットされており、そのColorが白RGB(255,255,255)で不透明度100%(Alpha=255)なのに、 Unityエディタ上のシーンビューで表示が真っ黒になった状態です。
(Prefab編集中ではないシーンビューやゲームビューでは真っ黒にならない)
ここで、SpriteRendererのMaterialが「Sprite-Lit-Default」など 2D Lights(2Dライト)の影響を受けるマテリアルである場合のみ以下の原因が疑われます。
[シーンビューの描画モードが影まで演算している]

シーンビューの描画モードバーにおいて、三日月のような影の付いた球体を選択した状態になっている場合、それは「Shaded Draw Mode」です。
Spriteが2Dライトを受けた光と影の状態を再現しますが、Prefabの中に2Dライトを含まない場合、光源がないので真っ黒になります。
(ここでは行いませんが、もしPrefab編集中にヒエラルキーで右クリック→空のオブジェクト→Light→Sprite Light 2Dなどを新たに設置すると「Shaded Draw Mode」であっても光を受けて正常に表示されます)
[2Dライトを追加しないままSpriteを表示する方法]

「Shaded Draw Mode」の左隣にある塗りつぶされた円、または、球体のアイコンをクリックし「Unlit Draw Mode」に切り替えると、 2Dライトや影の影響を受けずにSpriteが表示されるようになります。
[どんな時にPrefab編集中の影、光の影響をOFFにしたいのか]
筆者のゲーム開発中にこの不具合が起きたのは、すでにPrefab化されている、それでいて、シーン内にはまだインスタンス(実体化)されていない NPCキャラクターに新しいアニメ―ションを追加しようとした時でした。
Prefabを開いてCtrl+6のショートカットキーからAnimationClip(アニメクリップ)の録画を開始し、SpriteRendererのSprite欄に画像をセットしたところ、 真っ黒になったのです。
この状態ではアニメーションの編集が困難です。
そこで、シーンビューの描画モードを「Unlit Draw Mode」に切り替えることで、Prefab編集中でも影や光の影響を受けずにSpriteが 表示され、スムーズな編集が行えるようになりました。
なお、NPCキャラクターのPrefabはシーン内に複数インスタンスするのですが、 ゲーム内の明るさは別の全体ライトによって制御されているため各Prefabに2Dライトを持たせる必要はありませんでした。
[まとめ]
Unity6の2D/URPプロジェクトで、Prefab編集中にSpriteRendererのSpriteが真っ黒になってしまう原因は、 シーンビューの描画モードが「Shaded Draw Mode」になっていることが考えられます。「Unlit Draw Mode」に切り替えましょう。
また、冒頭で申しました通り、他のバージョンではメニューが異なり「Unlit Draw Mode」のないこともございます。Unityの公式ドキュメントにある古いバージョンでは描画モードの種類や内容が異なっていました。
カテゴリ ゲーム開発
[不具合の前提]
SpriteRenderer(スプライトレンダラー)を含むPrefab(プレハブ)を編集中モードにします。
※Assets内のPrefabオブジェクトをダブルクリックしたりヒエラルキーに置いたPrefabの右にある>マークをクリックしたりするとこのモードになります。
今回の不具合は、PrefabのSpriteRenderer内Sprite欄に画像がセットされており、そのColorが白RGB(255,255,255)で不透明度100%(Alpha=255)なのに、 Unityエディタ上のシーンビューで表示が真っ黒になった状態です。
(Prefab編集中ではないシーンビューやゲームビューでは真っ黒にならない)
ここで、SpriteRendererのMaterialが「Sprite-Lit-Default」など 2D Lights(2Dライト)の影響を受けるマテリアルである場合のみ以下の原因が疑われます。
[シーンビューの描画モードが影まで演算している]

シーンビューの描画モードバーにおいて、三日月のような影の付いた球体を選択した状態になっている場合、それは「Shaded Draw Mode」です。
Spriteが2Dライトを受けた光と影の状態を再現しますが、Prefabの中に2Dライトを含まない場合、光源がないので真っ黒になります。
(ここでは行いませんが、もしPrefab編集中にヒエラルキーで右クリック→空のオブジェクト→Light→Sprite Light 2Dなどを新たに設置すると「Shaded Draw Mode」であっても光を受けて正常に表示されます)
[2Dライトを追加しないままSpriteを表示する方法]

「Shaded Draw Mode」の左隣にある塗りつぶされた円、または、球体のアイコンをクリックし「Unlit Draw Mode」に切り替えると、 2Dライトや影の影響を受けずにSpriteが表示されるようになります。
[どんな時にPrefab編集中の影、光の影響をOFFにしたいのか]
筆者のゲーム開発中にこの不具合が起きたのは、すでにPrefab化されている、それでいて、シーン内にはまだインスタンス(実体化)されていない NPCキャラクターに新しいアニメ―ションを追加しようとした時でした。
Prefabを開いてCtrl+6のショートカットキーからAnimationClip(アニメクリップ)の録画を開始し、SpriteRendererのSprite欄に画像をセットしたところ、 真っ黒になったのです。
この状態ではアニメーションの編集が困難です。
そこで、シーンビューの描画モードを「Unlit Draw Mode」に切り替えることで、Prefab編集中でも影や光の影響を受けずにSpriteが 表示され、スムーズな編集が行えるようになりました。
なお、NPCキャラクターのPrefabはシーン内に複数インスタンスするのですが、 ゲーム内の明るさは別の全体ライトによって制御されているため各Prefabに2Dライトを持たせる必要はありませんでした。
[まとめ]
Unity6の2D/URPプロジェクトで、Prefab編集中にSpriteRendererのSpriteが真っ黒になってしまう原因は、 シーンビューの描画モードが「Shaded Draw Mode」になっていることが考えられます。「Unlit Draw Mode」に切り替えましょう。
また、冒頭で申しました通り、他のバージョンではメニューが異なり「Unlit Draw Mode」のないこともございます。Unityの公式ドキュメントにある古いバージョンでは描画モードの種類や内容が異なっていました。
カテゴリ ゲーム開発
