往々にして、ゲーム内のマテリアルの多くは、1 つのソースのバリエーションです。例えば、様々な色のバリエーションがある衣装や、被災したバージョンと被災していないバージョンの風景、綺麗な新しい小物と風化した小物などです。こうしたマテリアルの管理と維持を行いやすくするために、マテリアルバリアント (Material Variant) は、コピーされたマテリアルが持つ特定の欠点に対処します。以下の表を参照してください。
コピーされたマテリアル | マテリアルバリアント |
---|---|
ソースマテリアルに変更が加えられても自動的に変更されません。 | 親に変更が加わると自動的に変更されます。 |
コピーに加えられた変更をソースマテリアルで再現するには、ソースマテリアルを手動で調整する必要があります。 | マウスを 2 回クリックするだけで、子マテリアルに加えられた変更を親マテリアルにコピーできます。 |
コピーのプロパティへの変更を制限できません。 | マテリアルまたはマテリアルバリアントの 1 つまたは複数のプロパティをロック (固定) して、子プロパティの修正を防ぐことができます。 |
コピーを別のソースに関連付けることはできません。 | マテリアルバリアントは親の変更が可能です。 |
マテリアルバリアントは、マテリアルから作成することも、他のマテリアルバリアントから作成することもできます。マテリアルバリアントをマテリアルに変換することも可能です。様々な異なるマテリアルでバリアントにオーバーライドを使用するには、そのバリアントの親を変更します。
マテリアルバリアントの作成と変換の方法については マテリアルバリアントの作成、変更、適用 を参照してください。
マテリアルバリアントの階層に関する説明は マテリアルバリアントの継承 を参照してください。
マテリアルバリアントは、あらゆるマテリアルから作成可能です。これには Shader Graph (シェーダーグラフ) で作成したマテリアルや Asset Store からダウンロードしたマテリアルも含まれます。シェーダーからマテリアルバリアントを作成する方法の詳細は、マテリアルバリアントの作成、変更、適用 を参照してください。
オーバーライドは、マテリアルバリアントのプロパティに加える変更です。オーバーライドを 1 つずつ元に戻すことも、一度に全てのオーバーライドを元に戻すこともできます。Unity は Undo (“元に戻す”) スタックを通して取り消し処理を行うわけではないので、他の変更を元に戻すことなく 1 つのオーバーライドだけを元に戻すことができます。
オーバーライドを特定し、元に戻す方法に関する詳細は、マテリアルバリアントの作成、変更、適用 を参照してください。
Unity は、先祖の削除と循環依存を防止します。マテリアルバリアントの親を削除しようとすると、その子の新しい親の選択あるいは親の再作成を促す警告が表示されます。
マテリアルバリアントの階層と継承エラーメッセージに関する詳細は、マテリアルバリアントの継承 を参照してください。
Material Variant API を使用して、複雑な操作や大規模な操作でマテリアルバリアントの機能にアクセスできます。
スクリプトでマテリアルバリアントを扱う方法については、Material および MaterialEditor の API ドキュメントを参照してください。
プレハブバリアント とマテリアルバリアントは、ほとんど同じ機能、基本コンセプト、ワークフローを持っています。両者の重要な違いは以下の 2 つです。
マテリアルバリアントは、最適化やスケーラビリティに関する懸念に対処するようには設計されていません。また、ランタイムにプレイヤーでマテリアルバリアントを使用してマテリアルを変更することはできません。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.