LoginSignup
0
0

More than 1 year has passed since last update.

UnityのPresetの紹介

Posted at

UnityのPresetの紹介


はじめに:

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

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

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

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


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

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

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

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

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

using System.Linq;
using UnityEditor;
using UnityEngine;

namespace App.Editor.Presets {
    public class TextureImportPostProcess : AssetPostprocessor {
        public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets,
            string[] movedFromAssetPaths) {

            var paths = importedAssets.Union(movedAssets);
            foreach (var p in paths) {
                var importer = (TextureImporter)AssetImporter.GetAtPath(p);
                var setting = new TextureImporterSettings();
                setting.spritePixelsPerUnit = 16;
                setting.spriteMeshType = SpriteMeshType.FullRect;
                importer.spriteImportMode = SpriteImportMode.Multiple;
                importer.wrapMode = TextureWrapMode.Clamp;
                importer.filterMode = FilterMode.Point;
                importer.SaveAndReimport();
            }
        }
    }
}

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

  1. Presetを作成する:
Step 処理
1 ンポートしたSpriteを選択して、上記のPixel系の設定セットする。Inspectorで、右上のところあるの調整アイコンにクリックするとPresetWindowが開けます
OpenTextureImporterIcon.png
|

| 2 | 開かれたのWindowsにあるの[Save Current to...]ボタンをクリックして、Presetを保存する場所を選択する
SaveCurrentPreset.png

ここまででは、Presetの作成が完了されました。 |

  1. Presetを使う方法:

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

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

|

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

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

|


カストマイズコンポーネントの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アセットとして保存する:
    SaveComponentPreset.png

  2. ComponentのPresetをDefaultとして設定します:
    AddComponentPresetToDefault.png

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


Preset Manager

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

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

PresetManager.png

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


まとめ

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0