往々にして、ゲーム内のマテリアルの多くは、1 つのソースのバリエーションです。例えば、様々な色のバリエーションがある衣装や、被災したバージョンと被災していないバージョンの風景、綺麗な新しい小物と風化した小物などです。こうしたマテリアルの管理と維持を行いやすくするために、マテリアルバリアント (Material Variant) は、コピーされたマテリアルが持つ特定の欠点に対処します。以下の表を参照してください。
コピーされたマテリアル | マテリアルバリアント |
---|---|
ソースマテリアルに変更が加えられても自動的に変更されません。 | 親に変更が加わると自動的に変更されます。 |
コピーに加えられた変更をソースマテリアルで再現するには、ソースマテリアルを手動で調整する必要があります。 | マウスを 2 回クリックするだけで、子マテリアルに加えられた変更を親マテリアルにコピーできます。 |
コピーのプロパティへの変更を制限できません。 | マテリアルまたはマテリアルバリアントの 1 つまたは複数のプロパティをロック (固定) して、子プロパティの修正を防ぐことができます。 |
コピーを別のソースに関連付けることはできません。 | マテリアルバリアントは親の変更が可能です。 |
マテリアルバリアントは、マテリアルから作成することも、他のマテリアルバリアントから作成することもできます。マテリアルバリアントをマテリアルに変換することも可能です。様々な異なるマテリアルでバリアントにオーバーライドを使用するには、そのバリアントの親を変更します。
マテリアルバリアントの作成と変換の方法については マテリアルバリアントの作成、変更、適用 を参照してください。
マテリアルバリアントの階層に関する説明は マテリアルバリアントの継承 を参照してください。
マテリアルバリアントは、あらゆるマテリアルから作成可能です。これには Shader Graph (シェーダーグラフ) で作成したマテリアルや Asset Store からダウンロードしたマテリアルも含まれます。シェーダーからマテリアルバリアントを作成する方法の詳細は、マテリアルバリアントの作成、変更、適用 を参照してください。
オーバーライドは、マテリアルバリアントのプロパティに加える変更です。オーバーライドを 1 つずつ元に戻すことも、一度に全てのオーバーライドを元に戻すこともできます。Unity は Undo (“元に戻す”) スタックを通して取り消し処理を行うわけではないので、他の変更を元に戻すことなく 1 つのオーバーライドだけを元に戻すことができます。
オーバーライドを特定し、元に戻す方法に関する詳細は、マテリアルバリアントの作成、変更、適用 を参照してください。
Unity は、先祖の削除と循環依存を防止します。マテリアルバリアントの親を削除しようとすると、その子の新しい親の選択あるいは親の再作成を促す警告が表示されます。
マテリアルバリアントの階層と継承エラーメッセージに関する詳細は、マテリアルバリアントの継承 を参照してください。
Material Variant API を使用して、複雑な操作や大規模な操作でマテリアルバリアントの機能にアクセスできます。
スクリプトでマテリアルバリアントを扱う方法については、Material および MaterialEditor の API ドキュメントを参照してください。
プレハブバリアント とマテリアルバリアントは、ほとんど同じ機能、基本コンセプト、ワークフローを持っています。両者の重要な違いは以下の 2 つです。
マテリアルバリアントは、最適化やスケーラビリティに関する懸念に対処するようには設計されていません。また、ランタイムにプレイヤーでマテリアルバリアントを使用してマテリアルを変更することはできません。