2020/11/01

Unity Preset機能を試しました

WRITER: q.q.vuong

はじめに:

ゲーム開発のときに、プロジェクトによって、アセットの設定が多様だと思います。(アセットImportとか、GameObjectのComponentのDefault設定など)、それらを設定するタスクは、基本は複雑ではないですが、やる時間がかかるし、同じ事を繰り返すとやる気がなくなります。

その処理を便利にするため、UnityがPresetというEditor機能を開発しました。

そのPresetの管理はEditorのPreset Managerで管理されます。

Presetに関して、ほとんどUnityのOfficalページに書いてありますが、この記事では実際に触ってみた内容を書いております。


UnityのBuild inタイプのインポート設定をPresetとして保存する

普段ではAssetのインポート設定はコードAssetImporterを使って、設定をカスタマイズします。Presetを使ったら、そのコードを書かなくてもアセットのインポート設定をセットできます。更に、Presetはアセットなので、そのインポート設定のPresetをパッケージ化して、他のプロジェクトに持っていくことも可能です。

今回はPixel系のゲームの画像インポート設定で試してみました。

Pixel系なら、画像をインポートする際に、設定しなければならない項目があります:


一般的な扱い方はEditorスクリプトで、PostProcessorで処理しますね。

Presetを使用すると、コード1行も必要ないです!!!Σ(゚Д゚)

  1. Presetを作成する:
Step 処理
1 インポートしたSpriteを選択して、上記のPixel系の設定セットする。Inspectorで、右上のところあるの調整アイコンにクリックするとPresetWindowが開けます
2 開かれたのWindowsにあるの[Save Current to…]ボタンをクリックして、Presetを保存する場所を選択する

ここまででは、Presetの作成が完了されました。
  1. Presetを使う方法:

任意のSpriteに、Presetを適用する:

Step 処理
1 Spriteを選択して、①と同じ手順で、Preset設定Windowを開きます。
2 適用したいPresetにダブルクリックすると設定が完了しました。

デフォルトPresetを設定する:

Step 処理
1 Presetアセットを選択する。Inspector上にある[Add to xxxImporter Default]ボタンをクリックすると設定が完了されます。この設定で今後、どのSpriteがインポートされても設定されたPresetの設定を自動で適用されます。


カストマイズコンポーネントのPresetをPresetとして保存する

Editor上の話、Componentの設定を再利用したいケースは絶対あると思います。例:

  1. コピー元オブジェクトとペースト先オブジェクトの構成が違う: Componentのメニューを開いて、UnityのCopy/Paste Component Value(Paste As New Component)機能を使う。
  2. コピー元オブジェクトとペースト先オブジェクトの構成が同じ: GameObjectをPrefab化して、PrefabのNested Prefab機能を使う。

上記の①シナリオで、Presetが生まれる前に、もし設定物が多いなら、Componentをコピーして、ペースト操作繰り返し、又はスクリプトで(MonoBehaviourのReset関数とか)設定しなければならないですね(~_~;)

やはりベストのやり方ではないですね。(もちろんPresetみたいなEditor拡張を書けよいですが、コストも発生しちゃいますね)

Presetを使いましたら、上記のシナリオが簡単で達成できます(コード1行も必要ない):

  1. ComponentをPresetアセットとして保存する:
  2. ComponentのPresetをDefaultとして設定します:

上記の設定で完了しました。これから、GameObjectにPhysicsObjectというComponentを追加しましたら、上記のPresetが自動で適用されます。これで、開発が早くなりましたね。


Preset Manager

Preset ManagerはプロジェクトのPresetを全部管理しています。

Preset ManagerはEdit > Project Setting > Preset Managerに置いてあります。

DefaultのPresetを追加や削除はここで設定できます


まとめ

Presetが本当に便利なツールです。これをうまく利用できましたら、Workflowや自動化が改善できると思います。

アバター

q.q.vuong

開発Gクライアントエンジニア
メイン:Unity
興味はゲーム内システム仕組みを設計する。
現在はAddressable,PhotonとUnityの新しいECSを勉強しています。