Amazon10/19まで!プライム感謝祭開催中!セール会場へ

Unity Shader Graphの始め方|マテリアル作成とプロパティの設定

Unity Shader Graphの始め方 マテリアルとプロパティ

UnityのShader Graphは、コードを書かずに、ノードをつないでシェーダーを作るツールです。

最初の1つを作るまでの流れは、次のとおりです。

  1. Projectウィンドウで Create → Shader Graph → URP → Lit を選び、グラフを作る
  2. Shader Graphのウィンドウでノードを置き、右側のMaster Stackにつなぐ
  3. Save Asset で保存する
  4. グラフのアセットを右クリックして Create → Material でマテリアルを作る
  5. マテリアルをシーンのオブジェクトにドラッグする

この記事では、この流れに加えて、Blackboardでプロパティを作り、マテリアルのInspectorやスクリプトから値を変える方法を説明します。

Unityのエディタでの実機での再現は含まず、Unity 6.3 LTSに対応するShader Graph 17.3のドキュメントと、Unityのスクリプトリファレンスの記載(2026年10月18日に確認)に基づきます。

画面の名前は英語版の表記です。

目次

Shader Graphを使える環境

Shader Graphのドキュメントでは、URPかHDRPを入れると、Shader Graphのパッケージも自動で入ると説明されています。

Unity 6.3のマニュアルでは、Shader Graphはエディタの版に合わせて版が固定されるコアパッケージとして扱われています。

レンダーパイプラインShader Graphの扱い
URPインストールすると自動で入る
HDRPインストールすると自動で入る
Built-inUnity 2021.2以降はPackage Managerで入れれば使える。互換のためのもので、不具合の修正以外の更新はない
Shader Graph 17.3のドキュメント「Install Shader Graph」をもとに作成

同じページでは、Built-inでShader Graphを使う場合、XRに対応せず、GPU Instancingも効かないとされています。

これから始める場合は、URPかHDRPのプロジェクトで使うのが前提になります。

レンダーパイプラインの違いは、URP・HDRP・Built-inの違いと選び方で説明しています。

グラフを作る3つの方法

Shader Graphのアセットは、Projectウィンドウの右クリックメニューの Create → Shader Graph から作ります。

メニューできるもの
From Templateテンプレートの一覧から選んで作る。一覧はプロジェクトのレンダーパイプラインに合わせて表示される
URP → Lit などレンダーパイプラインとシェーダーの種類を決めた状態で作る
Blank Shader Graph空のグラフを作る。使うにはGraph Settingsでターゲットを決める必要がある
Shader Graph 17.3のドキュメント「Create a shader graph asset」をもとに作成

最初は、URPのプロジェクトなら Create → Shader Graph → URP → Lit で作るのが、公式の入門の例と同じ手順です。

Shader Graphのウィンドウの見方

作ったアセットに名前を付けると、Shader Graphのウィンドウが開きます。

開かない場合は、アセットをダブルクリックします。

部分役割
Master Stackシェーダーの最終的な見た目を決める終点。VertexとFragmentの2つの区画がある
Blackboardマテリアルから変えられるプロパティやキーワードを作って管理する
Graph Inspector選んだノードやプロパティの設定(Node Settings)と、グラフ全体の設定(Graph Settings)を変える
Main Previewシェーダーの見た目をその場で表示する。ドラッグで回し、ホイールで拡大縮小できる
Shader Graph 17.3のドキュメント(Master Stack・Blackboard・Graph Settings Tab・Main Preview)をもとに作成

Master Stackのドキュメントでは、Vertexの区画につないだノードは頂点の処理に、Fragmentの区画につないだノードはピクセルの処理になると説明されています。

色を変えるだけなら、Fragmentの区画にある Base Color につなぎます。

ノードを置いて色を付ける

  1. Shader Graphのウィンドウの何もない場所を選び、スペースキーを押す
  2. Create Nodeのメニューの検索欄に color と入力する
  3. Input → Basic の Color をダブルクリックして置く
  4. Colorノードの Out(4) の端子を、Fragmentの Base Color の端子へドラッグする
  5. Colorノードの色の帯をクリックし、色を選ぶ

公式の例では、つないだ直後はColorノードの初期値が黒のため、Main Previewの球は黒く表示されます。

色を選ぶと、Main Previewの色がその場で変わります。

最後に、ウィンドウの左上の Save Asset で保存します。

保存していない変更は、マテリアルには反映されません。

マテリアルを作ってオブジェクトに付ける

  1. Projectウィンドウで、保存したShader Graphのアセットを右クリックする
  2. Create → Material を選ぶ
  3. できたマテリアルを、シーンのオブジェクトにドラッグする

ドキュメントでは、この方法で作ったマテリアルには、元のShader Graphが自動で割り当てられると説明されています。

マテリアルのInspectorの Shader の欄に、グラフの名前が表示されていれば割り当てられています。

既にあるマテリアルを使う場合は、Inspectorの Shader の欄から、作ったグラフを選びます。

プロパティでInspectorから色を変える

Colorノードの色はグラフの中に固定されるため、マテリアルごとに色を変えたい場合は、プロパティを使います。

  1. Blackboardの Add (+) を押し、Color を選ぶ
  2. できたプロパティを選び、Graph Inspectorの Node Settings で Name を分かりやすい名前にする
  3. Show In Inspector がオンになっていることを確かめる
  4. プロパティをBlackboardからウィンドウの作業領域へドラッグする
  5. プロパティのノードを、Colorノードの代わりに Base Color へつなぐ
  6. Save Asset で保存する

保存してマテリアルのInspectorに戻ると、作ったプロパティが表示されます。

ドキュメントでは、Inspectorで変えた値は、そのマテリアルを使うすべてのオブジェクトに反映されると説明されています。

オブジェクトごとに違う色にしたい場合は、マテリアルを複数作ります。

よく使うプロパティの種類

種類マテリアルのInspectorでの表示
Color色を選ぶ欄
Float数値の欄。Modeを Slider にするとスライダーになる
Texture 2Dテクスチャを選ぶ欄。グラフでは Sample Texture 2D ノードにつないで使う
Booleanオン・オフの欄
Shader Graph 17.3のドキュメント(Property Types・Sample Texture 2D node)をもとに作成

Sample Texture 2D ノードは、Create Nodeのメニューの Input → Texture にあります。

NameとReferenceの違い

項目役割
NameマテリアルのInspectorに表示される名前
Referenceシェーダーの中で使う名前。スクリプトから値を変えるときはこちらを使う
Show In InspectorオンにするとマテリアルのInspectorに表示される
ScopePer Material はマテリアルごとに値を持つ。Global はスクリプトから全マテリアルの値をまとめて変える
Shader Graph 17.3のドキュメント「Property Types」をもとに作成

ドキュメントでは、Referenceを自分で書き換えたとき、先頭がアンダースコアでなければ自動で付き、HLSLで使えない文字は取り除かれると説明されています。

スクリプトから値を変える

プロパティの値は、スクリプトから Material.SetColor などで変えられます。

次の例は、Referenceが _Tint のColorプロパティを、再生したときに赤にするものです。

using UnityEngine;

public class ChangeTint : MonoBehaviour
{
    // Shader GraphのプロパティのReferenceと同じ名前にする
    static readonly int TintId = Shader.PropertyToID("_Tint");

    void Start()
    {
        var material = GetComponent<Renderer>().material;
        material.SetColor(TintId, Color.red);
    }
}

このコードは、スクリプトリファレンスのRenderer.material、Material.SetColor、Shader.PropertyToIDの記載をもとにしたもので、Unityでの実行は確かめていません。

スクリプトリファレンスでは、Renderer.materialを使うと、そのオブジェクト専用のマテリアルの複製が作られ、変更はそのオブジェクトにだけ反映されると説明されています。

同じページでは、こうして作られたマテリアルは、オブジェクトを破棄するときに自分で破棄する必要があるとされています。

Shader.PropertyToIDは、プロパティの名前を数値のIDに変えるもので、何度もSetColorを呼ぶ場合は文字列で渡すより効率がよいと説明されています。

うまくいかないときの確認

症状確かめること
マテリアルがピンク(マゼンタ)になるグラフのターゲットと、プロジェクトのレンダーパイプラインが合っているか
グラフを変えても見た目が変わらないSave Asset で保存したか
プロパティがInspectorに出ないShow In Inspector がオンか、Scope が Global になっていないか、保存したか
スクリプトから色が変わらないSetColorに渡した名前がNameではなくReferenceか
一部のブロックが灰色になっているGraph Settingsの設定で、そのブロックが使われない状態になっている
Shader Graph 17.3のドキュメントをもとに編集部で整理

Master Stackのドキュメントでは、Graph Settingsを変えると一部のブロックが使われない状態になり、そのブロックと、そこだけにつながったノードは灰色で表示されると説明されています。

Blank Shader Graphで作った場合は、Graph InspectorのGraph Settingsで、Active Targetsにレンダーパイプラインを追加します。

ピンクになる原因の詳しい切り分けは、マテリアルがピンク(マゼンタ)になる原因と直し方で説明しています。

Shader Graphのドキュメントでは、古いチュートリアルはMaster Stackができる前のマスターノードの画面で説明されていることがあると注意書きがあります。

検索で見つけた解説の画面が今と違う場合は、版を確かめてください。

参考にした公式ページ

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

Unityのおすすめ書籍

開発PCの選び方

周辺機器の優先度

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次