MRTK Standard Shader で ArgumentException: Could not find MaterialProperty: '_InstancedColor' が発生した場合の対処法
はじめに
MRTK ( Mixed Reality Toolkit for Unity ) を使用して開発をしていたところ、Unity Editor 上で Shader のプロパティが編集ができない事象が発生しました。以下、画像のように Unity Editor の Inspector 上で Shader プロパティを展開しようとしても何も表示されない状況です。
開発環境
- Unity 2019.4.11f1
- MRTK v2.5.1 ( Installed By Mixed Reality Feature Tool )
エラー内容
コンソールタブを見てみると、以下エラーが発生していることが判明しました。
ArgumentException: Could not find MaterialProperty: '_InstancedColor'
MRTK の GitHub Issue を検索してみると、MRTK Standard Shader の instanced color property は _Color で _InstancedColor ではないので、エラーが発生しているようです。
解決策
MRTK Code 内でエラーが発生している場合は、FindProperty("_InstancedColor") を FindProperty("_Color") に置き換えると良いと書いてありました。
https://github.com/microsoft/MixedRealityToolkit-Unity/issues/4188#issuecomment-872952279
エラーを見ると、以下ファイルが呼び出し元になっています。
Library/PackageCache/com.microsoft.mixedreality.toolkit.foundation@3093b5b13b68-1636644842558/Core/Inspectors/MixedRealityStandardShaderGUI.cs:212
FindProperty メソッドが呼び出されていますが、引数には変数が入っています。
212 : instancedColor = FindProperty(Styles.instancedColorName, props);
変数の宣言元を確認すると、32行目に対象コードを発見しました。
protected static class Styles
{
public static string instancedColorName = "_InstancedColor";
こちらのソースコードを以下内容に変更します.
protected static class Styles
{
public static string instancedColorName = "_Color";
上書き保存し、Unity Editor に戻ってみるとエラーが解消し、Shader のプロパティ値を確認することができました。
今回のプロジェクトでは MRTK パッケージを Mixed Reality Feature Tool を用いてインポートしているため、Library/PackageCache
がクリアされるたびに編集が必要になりますが、一時対応策としてメモしておきます。
Author And Source
この問題について(MRTK Standard Shader で ArgumentException: Could not find MaterialProperty: '_InstancedColor' が発生した場合の対処法), 我々は、より多くの情報をここで見つけました https://qiita.com/Futo_Horio/items/6e28a2587c1af8ceb830著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .