Unity Shader Graph とスクリプトを使用したエミッションカラーの変更
目次
概要
この技術資料では、UnityでShader Graphとスクリプトを使用してエミッションカラーを動的に変更する方法について説明します。このプロジェクトを通して、シーン内で立方体のエミッション効果を操作し、視覚的なフィードバックを向上させる手法を学びます。
ステップ1: プロジェクト設定
- Unityバージョン: Unity 6.0.0(スクリーンショット)
- プロジェクト名:ShaderGraphUV(サンプル)
- Shader Graphの確認:
- Unity 6ではShader Graphはデフォルトでインストールされています。
ステップ2: Shader Graphとマテリアルの作成
- Shader Graphの作成:
- 新しいShader Graphを作成し、エミッションカラーを制御するための
_EmissionColor
プロパティを追加します。 - 「Sample Texture 2D」ノードを接続し、スクリーンショットで示されているようにUV座標を操作します。
- 新しいShader Graphを作成し、エミッションカラーを制御するための
- マテリアルの作成:
- Shader Graphを作成した後、新しいマテリアルを作成し、そのShader Graphを適用します。
ステップ3: スクリプトの作成
以下のC#スクリプトを作成します。
using UnityEngine;
public class ChangeEmissionColor : MonoBehaviour
{
public Material material;
void Start()
{
if (material != null)
{
// エミッションカラーを青に設定(RGB: (0, 0, 1)、強度: 2.0)
Color emissionColor = new Color(0.0f, 0.0f, 1.0f) * 2.0f;
// マテリアルに色を適用
material.SetColor("_EmissionColor", emissionColor);
// エミッションを有効化
material.EnableKeyword("_EMISSION");
}
}
}
コードのポイント
material.SetColor("_EmissionColor", emissionColor);
: Shader Graphのプロパティに直接アクセスしてエミッションカラーを変更します。material.EnableKeyword("_EMISSION");
: マテリアルのエミッション効果を有効化します。
ステップ4: ポストエフェクト効果の追加
シーンにGlobal Volume
を追加し(標準で追加されているはず)、Bloom
エフェクトを有効にします。スクリーンショットのように、Intensity
やThreshold
を調整してエミッションカラーをより際立たせます。
ステップ5: Unityでの実装
- ゲームオブジェクトのセットアップ:
- シーンにCubeを配置し、作成したマテリアルを適用します。
- スクリプトのアタッチ:
ChangeEmissionColor
スクリプトをCubeオブジェクトに追加し、作成したマテリアルを指定します。
- 動作確認:
- 再生ボタンを押して、エミッションカラーが変更されることを確認します。
トラブルシューティング
エミッションが動作しない場合:
- Shader Graphの
_EmissionColor
プロパティが正しく設定されているか確認してください。 - マテリアルに正しいShader Graphが適用されているか確認してください。
スクリプトエラー:
material
がnull
の場合、インスペクターで正しいマテリアルが指定されているか確認してください。
応用例
- 時間経過やプレイヤーの行動に応じてエミッションカラーを変化させる。
- 複数のオブジェクトにスクリプトを適用し、シーン内で動的な視覚フィードバックを演出する。
ディスカッション
コメント一覧
まだ、コメントがありません