ゲーム内のマテリアルの多くは、1 つのソースによるバリエーションです。例えば、さまざまな配色の衣装、破壊される前後の風景、未使用および使い古された小道具のインスタンスなどがあります。これらのマテリアルの管理とメンテナンスのために、マテリアルバリアントはコピーされたマテリアル特有の欠点に対処します。以下の表を参照してください。
| コピーされたマテリアル | マテリアルバリアント |
|---|---|
| ソースマテリアルが変更されても自動的に変更されません。 | 親が変更された場合、自動的に変更されます。 |
| コピーに対する変更をソースマテリアルに複製するには、ソースマテリアルを手動で調整する必要があります。 | マウスを 2 回クリックするだけで、子マテリアルに対する変更を親マテリアルにコピーできます。 |
| コピーのプロパティに対する変更を制限できません。 | マテリアルまたはマテリアルバリアントの 1 つ以上のプロパティをロックして、子のプロパティを変更できないようにすることができます。 |
| コピーを別のソースに関連付けることはできません。 | マテリアルバリアントの親を変更できます。 |
マテリアルバリアントは、マテリアルおよび他のマテリアルバリアントの両方から作成できます。マテリアルバリアントをマテリアルに変換することもできます。さまざまなマテリアルを使用したバリアントにオーバーライドを適用するには、そのバリアントの親を変更します。
マテリアルバリアントの作成と変換の方法については、マテリアルバリアントの作成、修正、適用 を参照してください。
マテリアルバリアントの階層に関する説明は、マテリアルバリアントの継承 を参照してください。
Shader Graph で作成したマテリアルや Asset Store からダウンロードしたマテリアルなど、あらゆるマテリアルからマテリアルバリアントを作成できます。シェーダーからマテリアルバリアントを作成する方法の詳細は、マテリアルバリアントの作成、修正、適用 を参照してください。
オーバーライドは、マテリアルバリアントのプロパティに対して行う変更です。オーバーライドは 1 つずつ元に戻すことも、一度にすべて元に戻すこともできます。Unity は取り消し処理に Undo スタックを使用しないため、他の変更を元に戻すことなくオーバーライドだけを元に戻すことができます。
オーバーライドの特定と取り消しの方法に関する詳細は、マテリアルバリアントの作成、修正、適用 を参照してください。
Unity は先祖の削除と循環依存を防止します。マテリアルバリアントの親を削除しようとすると、子に新しい親を選択するか作成するよう警告します。
マテリアルバリアントの階層と継承エラーメッセージの詳細は、マテリアルバリアントの継承 を参照してください。
Material Variant API を使用すると、マテリアルバリアントの機能を複雑な操作や大規模な操作に利用できます。
スクリプトでマテリアルバリアントを使用する方法については、Material および MaterialEditor API のドキュメントを参照してください。
プレハブバリアント とマテリアルバリアントの機能、基本概念、ワークフローはほとんど同じです。両者の主な違いは以下の 2 つです。
マテリアルバリアントは、最適化とスケーラビリティに関する懸念に対処するように設計されていません。また、マテリアルバリアントを使用してランタイムにプレイヤーでマテリアルを変更することはできません。