うにてぃブログ

主にUnityとC#に関する記事を書いていきます

【Unity】スクリプトから Shader もしくは Material にパラメータを渡す

Shader には SetGlobalColorSetGlobalVector
また Material には SetColorSetVector などパラメータを渡すためのメソッドが用意してあります

Shader では そのパラメータを持っている すべての Shader に対して変更を行えます

Material では その Material の参照を持っているオブジェクトにのみ変更を行えます

サンプル

以下の Shader の _ColorTest のパラメータを変更したい場合

        Pass
        {
           ...
 
            float4 _ColorTest;
 
            ...
         }
// 全Shader の _ColorTest のパラメータを変更
Shader.SetGlobalColor("_ColorTest", shaderColor);

// 指定した Material の _ColorTest のパラメータを変更
material.SetColor("_ColorTest", matrialColor);

両方利用していた際の優先度

例えば Shader.SetGlobalColorMaterial.SetColor の両方を指定していた場合
呼び出しの順番に関係なく Material 側が優先されます