Edited at

[Unity] Unity2018の新機能Presetを使ってみた

Unity2018で追加された機能「Preset」を触ってみます。


実行環境


  • Unity2018.1.0b4

  • 追記: Unity2019.2.0f1


Presetで出来ること


コンポーネント/アセットの値のファイル書き出し

Unity2018からは下記のようなアイコンがコンポーネント上に表示されるようになります。

preset.png

これはフォントや画像、音声といったアセットにおいても同等です。

preset2.png

この動線から Save current to... を選択することでPresetファイルを書き出すことができます。

Presetファイルにはそのコンポーネントやアセットにおける設定値が保持されます。

preset.gif


Presetをコンポーネントに適応する

上記で出力されたPeset(設定値)を特定のコンポーネント/アセットに適応することができます。

コンポーネント/アセットからPresetアイコンを選択し、適応したいPresetを選択します。

preset2.gif

また適応したいコンポーネント/アセット名にPresetアセットをドラッグしても適応できます。

preset3.gif


特定のPresetをデフォルト値とする

Presetアセットの Set As ~~~ Default の導線を選択することでデフォルト値を設定できます。

設定された値は、AddComponentもしくはアセットインポート時に適応されます。

当然ながら、同一のコンポーネント/アセットにおいて複数設定することはできません。

preset4.gif


Presetにおける注意事項


Hierarchy/Menu経由でCreateした場合にデフォルト値が適応されない


追記(20190731)


Hierarchy/Menu経由でCreateした場合にデフォルト値が適応されない


Unity2019.2にてuGUIのケースにて解消されました!

======

Unity2018.1.0b4までのバージョンにおいて

Hierarchy/Menu経由でCreateした場合にはデフォルト値が適応されないことを確認しました。

(Unity初期値が設定されたPrefabをInstantiateしているような挙動)

preset5.gif

ちなみにResetをすることでデフォルト値が反映されます。

preset6.gif


Prefabと異なり、Preset自体の変更は伝搬できない

Prefabは変更をApplyすることで、Scene上に配置したコンポーネントに変更を伝搬することが可能ですが

Presetアセットを変更しても、既にScene上に配置したComponentやアセットには適応されません。

この場合、再度Presetを指定して変更を反映する必要があります。

preset7.gif


Presetの良いと感じた部分


Prefabと違って対象のComponent以外を管理対象にしなくてよい

Prefabの場合、管理したいコンポーネント以外の情報も保有します。

Presetを使用することで、最小限の運用を行うことができます。


デフォルト値が設定できる

画像や音声など一括で同一の設定を持っておきたいアセットの設定に重宝するでしょう。

(アセットの設定を持てることがそもそもPresetの大きなアドバンテージとなります)

また UI.TextUI.Image において RaycastTarget を外しておき

下に描画されたボタンのタッチを阻害する事故を防ぐようなこともできるでしょう。