投稿者 tel | 2016年12月29日

UnityでRendererのマテリアルがmissingかどうか判定する

何らかの理由でRendererについているマテリアルがmissingになってしまったときを検出する場合はrenderer.sharedMaterialがnullかどうかでチェックする。
https://docs.unity3d.com/jp/current/ScriptReference/Renderer-sharedMaterial.html

missing_ss

マテリアルがmissingだとピンク色になる。(エラーのシェーダでレンダリングされている)

missing_ss2

Debug.Assert(renderer.sharedMaterial != null);

sharedMaterialを参照するとAssertに引っかかる。

Debug.Assert(renderer.material != null);

materialを参照するとgetした瞬間に新たなマテリアルが生成されてしまうのでAssertが通ってしまう。

ちなみにmissingになっているときにmaterialをgetして生成されるマテリアルは実行環境によって異なる。(おそらくシェーダの有無で違う)

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

カテゴリー

%d人のブロガーが「いいね」をつけました。