実行時に以下の警告が出ました。
Material XXX doesn’t have YYY property
UnityEngine.UI.ScrollRect:LateUpdate()
まあ警告なので放っといても良かったのですが、警告は消さなきゃ気が済まないタイプなので。。。
原因
UIの一部Imageにデフォルトじゃないマテリアル(今回はアウトラインを表示するマテリアル)を適用しているのですが、そのマテリアルが原因のようです。
警告文の「XXX」にその原因のマテリアル名が入ります。
このマテリアルに、「YYY」というプロパティが存在しないよ!と言われているみたい。
警告を消す方法
まず、デフォルトのUIマテリアルのプロパティを確認します。
デフォルトのUIマテリアルは「Default UI Material」という名前のマテリアルです。
これが適用されているオブジェクトを見つけ(見つからない場合は新しくImageを作成すればデフォルトで適用されていると思います)、マテリアル名のところで右クリック→Select Shaderを選択。
インスペクタにマテリアルの詳細が表示されるので、Compile and show codeをクリック。
「Compiled-UI-Default.shader」がエディタで開くので、その最初の部分にあるPropertiesを確認。
Properties {
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" { }
_Color ("Tint", Color) = (1.000000,1.000000,1.000000,1.000000)
_StencilComp ("Stencil Comparison", Float) = 8.000000
_Stencil ("Stencil ID", Float) = 0.000000
_StencilOp ("Stencil Operation", Float) = 0.000000
_StencilWriteMask ("Stencil Write Mask", Float) = 255.000000
_StencilReadMask ("Stencil Read Mask", Float) = 255.000000
_ColorMask ("Color Mask", Float) = 15.000000
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0.000000
}
このようなコードが記述されていると思います。
これらのプロパティが存在しないと警告が表示されてしまう様子。
そのため、警告の出るシェーダーも同様にエディタで開き、上記プロパティの中で存在しないものをコピペします。
これで保存すれば実行しても警告が出ませんでした!
コメント