Version: 2023.1
言語: 日本語
マテリアルバリアントの継承
ビジュアルエフェクト

マテリアルバリアントの作成、修正、適用

このページでは、マテリアルバリアントの取り扱い方を説明します。 プログラマーがスクリプトでマテリアルバリアントを扱う方法については、Material および MaterialEditor API ドキュメントを参照してください。

プレハブバリアントとマテリアルバリアントの違い

マテリアルバリアントのワークフローは、プレハブバリアントのワークフローとほとんど同じですが、以下の 2 つの重要な違いがあります。

  • マテリアルバリアントでは、1 つまたは複数のプロパティをロック (固定) して、子バリアント内でそのプロパティを編集できないようにすることができます。
  • マテリアルバリアントの親は変更可能です。

マテリアルバリアントの作成

新しいプロジェクトを作成するには 2 つの方法があります。

Project ウィンドウでマテリアルを右クリックする方法

  1. Project ウィンドウでマテリアルを選択します。
  2. そのマテリアル上で右クリックします。
  3. Create > Material Variant を選択します。

Material Hierarchy から選択する方法

  1. Material Hierarchy ダイアログを開きます。
  2. マテリアルタイプのドロップダウンを選択します。
  3. Material Variant を選択します。
  4. 親フィールドにマテリアルを割り当てます。
Material Hierarchy からマテリアルバリアントを作成するドロップダウン
Material Hierarchy からマテリアルバリアントを作成するドロップダウン

新しいマテリアルバリアントの特定

新しいマテリアルバリアントを作成すると、マテリアルのインスペクター上に “[マテリアル名] Variant (Material Variant)” という形式の名前で表示されます。Unity が新しいマテリアルバリアントのロードを開始すると、そのマテリアルバリアントは Project ウィンドウでストライプのアイコン付きで表示されます。Unity が新しいマテリアルバリアントのロードを終了すると、Project ウィンドウ上でストライプアイコンが通常のマテリアルプレビューに置き換わります。

マテリアルバリアントへのオーバーライドの追加

  1. マテリアルバリアントを選択します。
  2. マテリアルのインスペクターで、そのプロパティの 1 つを修正します。
プロパティの左にある太線 (スクリーンショットの赤枠内) は、オーバーライドを表します。
プロパティの左にある太線 (スクリーンショットの赤枠内) は、オーバーライドを表します。

マテリアルバリアントの 1 つまたは複数のオーバーライドの取り消し

  1. オーバーライドを右クリックします。
  2. この特定のオーバーライドを取り消すには Revert を選択し、このバリアントの全てのオーバーライドを取り消すには Revert all Overrides を選択します。このオーバーライドが子から発生したものであれば、取り消しがその子にも適用されます。

継承システムによって変更取り消しの効果が決定される仕組みに関する詳細な説明は、マテリアルバリアントの継承 または 上方へ適用されたオーバーライドの取り消し を参照してください。

階層内上方へのオーバーライドの適用

オーバーライドは、階層内の上方へ適用できます (どの先祖にも適用可能です)。

このドロップダウンでは、オーバーライドを取り消したり、上方へ適用したり、ロックしたりできます。
このドロップダウンでは、オーバーライドを取り消したり、上方へ適用したり、ロックしたりできます。

親へのオーバーライドの適用

オーバーライドを親に適用するには、オーバーライドを右クリックし、ドロップダウンから Apply to [親の名前] を選択します。

先祖へのオーバーライドの適用

オーバーライドを先祖に適用するには、オーバーライドを右クリックし、ドロップダウンから Apply to [祖先の名前] を選択します。

上方に適用された 1 つまたは複数のオーバーライドの取り消し

上方に適用されたオーバーライドは、それを発生させた子のほうで取り消すことはできません。代わりに、受け手の親あるいは先祖のほうでそれを取り消す必要があります。マテリアルバリアントの 1 つまたは複数のオーバーライドの取り消し の説明を参照してください。

マテリアルバリアントの削除

  1. Project ウィンドウでマテリアルバリアントを選択します。
  2. Delete キーを押します。 次のステップは、そのマテリアルバリアントに子があるかどうかによって変わります。
    • そのマテリアルバリアントに子バリアントがない場合は、警告ダイアログ内で Delete をクリックしてバリアントを削除します。
    • そのマテリアルバリアントに 1 つ以上の子がある場合は、警告ダイアログに One or more of these Material(s) has one or more children. Would you like to reparent all of these children to their closest remaining ancestor? (1 つ以上の子を持つマテリアルが 1 つ以上あります。残りの最も近い先祖をこれら全ての子の親にしますか?") というメッセージが表示されます。
      • 警告ダイアログには以下の 3 つのオプションが提供されます。
        • Delete and reparent children (削除して子の親を変更する): このオプションを選択すると、Unity が自動的に、この親の子を最も近い先祖に割り当てます。この新しい親は、マテリアルバリアントかマテリアルのどちらか (あるいは、削除するマテリアルが階層のルートである場合は親なし) になります。
        • Delete only (削除のみ): ノート: 親が存在しないマテリアルは無効な状態であり、ランタイムで正しくロードされません。
        • Cancel (キャンセル): 孤児マテリアルバリアントに関する情報は、継承エラーメッセージ を参照してください。

マテリアルバリアントの親の変更

マテリアルバリアントの親を変更するには 2 つの方法があります。

マテリアルのインスペクターで変更する

  1. Project ウィンドウで、親を変更したいバリアントを選択します。
  2. Parent プロパティの横にある二重丸アイコンを選択し、Select Material ダイアログで新しい親を選択します。
新しい親の選択
新しい親の選択

Project ウィンドウで変更する

新しく親にするマテリアルまたはマテリアルバリアントを、ターゲットの子にドラッグします。

プロパティのロック

  1. プロパティを右クリックします。
  2. ドロップダウンで **Lock in children" を選択します。
  3. ロックされたプロパティの横に、南京錠アイコンが表示されます。

プロパティのロックを解除するには、Lock in children を再度クリックします。

ロックメニュー
ロックメニュー

マテリアルバリアントからマテリアルへの変換

マテリアルバリアントをマテリアルに変換するには以下の 2 つの方法があります。

Hierarchy ビューから変換する

  1. Project ウィンドウでマテリアルバリアントを選択します。
  2. マテリアルのインスペクター内で Hierarchy ダイアログを展開します。
  3. マテリアルタイプドロップダウンで Material を選択します。
Hierarchy ビューからマテリアルに変換する
Hierarchy ビューからマテリアルに変換する

設定ドロップダウンから変換する

  1. マテリアルのインスペクターの設定ドロップダウンをクリックします。
  2. ドロップダウンから Flatten Material Variant を選択します。
Flatten Material Variant オプション
Flatten Material Variant オプション

その他の参考資料

マテリアルバリアントの継承
ビジュアルエフェクト