概要
ShaderGraphでBooleanを使ったノード切り替えについてまとめます。コードで切り替えるとき少し癖がありました
本文
ShaderGraph内でBooleanプロパティをつないだBranchで赤色と青色を切り替えます。
Cube対してChangeColorスクリプトを張り付けます
using UnityEngine;
public class ChangeColor : MonoBehaviour
{
[SerializeField] private bool isRed;
void Start()
{
GetComponent<Renderer>().material.SetInt("_ColorChange", isRed ? 1 : 0);
}
}
InspectorからisRedフラグをON/OFFすることでシェーダーの機能を切り替えることができます。
マテリアルにはSetBooleanみたいなメソッドは無いようで、SetIntを使って1もしくは0を指定することでtrue/falseを切り替えられます。
Booleanでの切り替えは、内部的にはtrue側とfalse側の両方が計算されているらしいので処理負荷が気になる方は検討が必要そうです。