Version: 2022.3
言語: 日本語
物理ベースのレンダリングマテリアルバリデーター
マテリアルバリアント

C# スクリプトでマテリアルを扱う

マテリアルの Inspector ウィンドウに表示されるパラメーターはすべて、スクリプトからアクセスすることが可能で、ランタイムにマテリアルを変化させたりアニメーション化したりすることができます。

これにより、ゲームプレイ中にマテリアルの数値を変更したり、色を変更したり、テクスチャを動的に交換したりすることができます。これを行うために最も一般的に使用されるメソッドには、以下のようなものがあります。

メソッド名 用途
SetColor マテリアルの色を変えます (例えば、アルベド色)
SetFloat 浮動小数点の値を設定します (例えば、法線マップ乗数)
SetInteger マテリアルに整数値を設定します
SetTexture マテリアルに新しいテクスチャを指定します

スクリプトを通じてマテリアルを操作するために使う全メソッドは、Material クラス スクリプトリファレンスで参照できます。

1 つ注意が必要なのは、これらのメソッドはマテリアルの 現在のシェーダーオブジェクトに使用可能なプロパティのみを設定する という事です。これは、テクスチャを使わないシェーダーがある場合や、シェーダーがまったくバインドされていない場合、SetTextureを呼び出しても何の効果がない、という事です。これは、後でテクスチャを必要とするシェーダーを設定する場合にも当てはまります。このため、何かプロパティを設定する前に必要なシェーダーをセットすることを推奨します。ただし、シェーダーを設定した後、あるシェーダーから同じテクスチャまたはプロパティを使用する別のシェーダーに切り替えることができ、値は保持されます。

これらのメソッドは、古いシェーダーのようなすべての簡易なシェーダーや、 スタンダードシェーダー以外のビルトインシェーダー (例えば、パーティクル、スプライト、UI、unlit シェーダー) に対して、期待通りに機能します。ただし、スタンダードシェーダーを使用するマテリアルの場合は、マテリアルを完全に変更するには、その前に必要な追加の要件がいくつかあります。

物理ベースのレンダリングマテリアルバリデーター
マテリアルバリアント