LoginSignup
0
0

More than 1 year has passed since last update.

MRTK Standard Shader で ArgumentException: Could not find MaterialProperty: '_InstancedColor' が発生した場合の対処法

Last updated at Posted at 2021-11-13

はじめに

MRTK ( Mixed Reality Toolkit for Unity ) を使用して開発をしていたところ、Unity Editor 上で Shader のプロパティが編集ができない事象が発生しました。以下、画像のように Unity Editor の Inspector 上で Shader プロパティを展開しようとしても何も表示されない状況です。

image.png (17.7 kB)

開発環境

  • Unity 2019.4.11f1
  • MRTK v2.5.1 ( Installed By Mixed Reality Feature Tool )

エラー内容

コンソールタブを見てみると、以下エラーが発生していることが判明しました。

ArgumentException: Could not find MaterialProperty: '_InstancedColor'

image.png (114.2 kB)

MRTK の GitHub Issue を検索してみると、MRTK Standard Shader の instanced color property は _Color で _InstancedColor ではないので、エラーが発生しているようです。

解決策

MRTK Code 内でエラーが発生している場合は、FindProperty("_InstancedColor") を FindProperty("_Color") に置き換えると良いと書いてありました。

image.png (104.8 kB)

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 のプロパティ値を確認することができました。

image.png (147.5 kB)

今回のプロジェクトでは MRTK パッケージを Mixed Reality Feature Tool を用いてインポートしているため、Library/PackageCache がクリアされるたびに編集が必要になりますが、一時対応策としてメモしておきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0