Unity2018で追加された機能「Preset」を触ってみます。
実行環境
- Unity2018.1.0b4
- 追記: Unity2019.2.0f1
Presetで出来ること
コンポーネント/アセットの値のファイル書き出し
Unity2018からは下記のようなアイコンがコンポーネント上に表示されるようになります。
これはフォントや画像、音声といったアセットにおいても同等です。
この動線から Save current to...
を選択することでPresetファイルを書き出すことができます。
Presetファイルにはそのコンポーネントやアセットにおける設定値が保持されます。
Presetをコンポーネントに適応する
上記で出力されたPeset(設定値)を特定のコンポーネント/アセットに適応することができます。
コンポーネント/アセットからPresetアイコンを選択し、適応したいPresetを選択します。
また適応したいコンポーネント/アセット名にPresetアセットをドラッグしても適応できます。
特定のPresetをデフォルト値とする
Presetアセットの Set As ~~~ Default
の導線を選択することでデフォルト値を設定できます。
設定された値は、AddComponentもしくはアセットインポート時に適応されます。
当然ながら、同一のコンポーネント/アセットにおいて複数設定することはできません。
Presetにおける注意事項
Hierarchy/Menu経由でCreateした場合にデフォルト値が適応されない
追記(20190731)
Hierarchy/Menu経由でCreateした場合にデフォルト値が適応されない
Unity2019.2にてuGUIのケースにて解消されました!
======
Unity2018.1.0b4までのバージョンにおいて
Hierarchy/Menu経由でCreateした場合にはデフォルト値が適応されないことを確認しました。
(Unity初期値が設定されたPrefabをInstantiateしているような挙動)
ちなみにResetをすることでデフォルト値が反映されます。
Prefabと異なり、Preset自体の変更は伝搬できない
Prefabは変更をApplyすることで、Scene上に配置したコンポーネントに変更を伝搬することが可能ですが
Presetアセットを変更しても、既にScene上に配置したComponentやアセットには適応されません。
この場合、再度Presetを指定して変更を反映する必要があります。
Presetの良いと感じた部分
Prefabと違って対象のComponent以外を管理対象にしなくてよい
Prefabの場合、管理したいコンポーネント以外の情報も保有します。
Presetを使用することで、最小限の運用を行うことができます。
デフォルト値が設定できる
画像や音声など一括で同一の設定を持っておきたいアセットの設定に重宝するでしょう。
(アセットの設定を持てることがそもそもPresetの大きなアドバンテージとなります)
また UI.Text
や UI.Image
において RaycastTarget
を外しておき
下に描画されたボタンのタッチを阻害する事故を防ぐようなこともできるでしょう。