仮に下の画像のようなShader GraphとMaterialを想定します。
このときに、MaterialのInspectorにあるSurface InputsのFloatの値をスクリプトから変更する場合を考えます。
Materialのfloat型のプロパティを変更するにはSetFloat()を使いますが、
このときにInspectorに表示されているプロパティ名ではなく、
下の画像のように
Shader Graphのタブに表示されているReferenceの値を使います。
下のコードがマテリアルのSurface Inputsの値を変更するコードです。
実行すると、Floatの値が1.0に変わります。
using UnityEngine;
public class Sample : MonoBehaviour
{
public Material material; // 対象のマテリアル
private string propertyName = "_Float"; // 変更させるShader Graph のプロパティ名
private float propertyValue = 1.0f; // 変更後の値
void Start()
{
material.SetFloat(propertyName, propertyValue);
}
}
ポイントは、SetFloat()メソッドを使用する際、Inspectorに表示されているプロパティ名ではなく、Shader GraphのReferenceに表示されているプロパティ名を使用することです。