コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【Unity】Unity 2020 から便利になった Preset Manager を使ってみる

はじめに

Unity 2020 からは Preset や Preset Manager が便利になりました

  • アセットの Preset の場合は、どのフォルダのアセットに
    どの Preset を反映するか設定できるようになった
  • Preset の一部のパラメータのみを反映できるようになった

この記事では Preset の基本的な使い方と
上記の新しい機能の使い方を紹介していきます

目次

検証環境

  • Unity 2020.3.13f1

コンポーネントの初期設定を Preset で設定する

f:id:baba_s:20210716173748p:plain

例えば新規で作成した Image オブジェクトの
「Raycast Target」をデフォルトでオフにしたい場合、

f:id:baba_s:20210716173751p:plain

Image の Raycast Target をオフにした状態でアイコンを押して

f:id:baba_s:20210716173754p:plain

「Save current to...」を押して

f:id:baba_s:20210716173757p:plain

Image 用の Preset を保存します

f:id:baba_s:20210716173927p:plain

保存した Preset の「Add to Image default」を押すと

f:id:baba_s:20210716173935g:plain

次から Image オブジェクトを作成した時に
この Image Preset の設定が反映されて Raycast Target がデフォルトでオフになります

f:id:baba_s:20210716174314p:plain

デフォルト設定から解除したい場合は「Remove from Image default」を選択します

f:id:baba_s:20210716173930p:plain

今、デフォルトで設定されている Preset がどれか確認したい場合は
Project Settings の Preset Manager の欄で確認できます

アセットの初期設定を Preset で設定する

f:id:baba_s:20210716175545p:plain

例えば Unity プロジェクトに
「Background」と「Tilemap」のテクスチャを管理するフォルダがあり

f:id:baba_s:20210716175756p:plain

Background フォルダに追加されたテクスチャには Background 用の Preset を、
Tilemap フォルダに追加されたテクスチャには Tilemap 用の Preset を反映させたい場合、

f:id:baba_s:20210716180236p:plain

Project Settings の Preset Manager の「Add Default Preset」を押して
「TextureImporter」を押して

f:id:baba_s:20210716180244p:plain

上記のようにリストの要素を2つ作成して
それぞれに Background 用の Preset と Tilemap 用の Preset を設定し、

f:id:baba_s:20210716180417p:plain

そして、Background 用の Preset の Filter の欄には

glob:"Assets/Textures/Background/*.png"

上記の文字列を入力、Tilemap 用の Preset の Filter の欄には

glob:"Assets/Textures/Tilemap/*.png"

上記の文字列を入力します

このように Filter の欄を活用することで
同じ種類のアセットでもフォルダごとに違う Preset を適用できるようになります

Preset で反映するパラメータを選択する

デフォルトでは Preset を反映する時は
その Preset が持つすべてのパラメータが反映されます

例えばテクスチャの Preset を反映する時に
「Alpha Is Transparency」は反映されないようにしたい、といった場合は

f:id:baba_s:20210716181852g:plain

反映したくないパラメータを右クリックして「Exclude Property」を押すと

f:id:baba_s:20210716183858p:plain

Preset 反映時にそのパラメータは無視されるようになります

f:id:baba_s:20210716182151p:plain

Inspector のヘッダの部分を右クリックして
「Exclude all properties」を押すと、すべてのパラメータを無視するようになり、
「Include all properties」を押すと、すべてのパラメータを反映するようになります

無視したいパラメータが多くて1つ1つ右クリックして
「Exclude Property」を押すのが大変な場合は、「Exclude all properties」してから
反映したいパラメータを右クリックして「Include Property」を押す、
といった使い方が可能です

右クリックしてもメニューが表示されない場合

f:id:baba_s:20210716182517g:plain

エディタ拡張の影響か、パラメータの中には
右クリックしても「Exclude Property」や「Include Property」を実行するメニューが
表示されない場合があります

f:id:baba_s:20210716182645p:plain

そのため、例えばテクスチャのプラットフォームごとの設定は Preset で反映したいが、
それ以外のパラメータは無視したい、という設定がデフォルトだとできない状態です

対策としては、

f:id:baba_s:20210716183041p:plain

まず、「Exclude all properties」を押して
すべてのパラメータを無視するように設定してから

f:id:baba_s:20210716183045p:plain

Inspector を Debug 表示にします

f:id:baba_s:20210716183048p:plain

すると、「Excluded Properties」の一覧で
テクスチャのパラメータをすべて無視するようになっていることが確認できるので

f:id:baba_s:20210716183052p:plain

その中からプラットフォームごとの設定を管理するパラメータの名前を探し出し、

f:id:baba_s:20210716183104p:plain

右クリックして「Delete Array Element」を押します

こうすることで、
テクスチャのプラットフォームごとの設定のみを反映できる Preset が完成します

このように、右クリックしてメニューが表示されないパラメータが存在し、
無視設定がうまくできない場合は、Inspector のデバッグ表示を活用すると対応できます