本日はUnityの小ネタ枠です。
UnityでPresetを使ってInspectorビューの設定を保存/適用する方法です。
今回はPresetの作成を無効にする設定についてです。
前回記事
以下の前回記事の続きです。
bluebirdofoz.hatenablog.com
ExcludeFromPreset
ExcludeFromPreset属性をクラスに設定するとクラスのPresetが作成できなくなります。
docs.unity3d.com
サンプルスクリプト
ExcludeFromPreset属性を設定していないクラスと設定したクラスの以下のサンプルスクリプトを作成しました。
・ExcludeFromPreset属性を設定していないクラス
using UnityEditor; using UnityEditor.Presets; using UnityEngine; public class PresetTest : MonoBehaviour { [SerializeField] private int presetInt = 0; [SerializeField] private string presetString = "preset"; [SerializeField] private bool presetBool = false; [ContextMenu("Create Preset")] public void CreatePresetAsset() { Preset preset = new Preset(this); AssetDatabase.CreateAsset(preset, "Assets/Sandbox/PresetTest/Exports/CreatedPresetTest.preset"); } }
・ExcludeFromPreset属性を設定したクラス
using UnityEditor; using UnityEditor.Presets; using UnityEngine; [ExcludeFromPreset] public class ExcludePresetTest : MonoBehaviour { [SerializeField] private int presetInt = 0; [SerializeField] private string presetString = "preset"; [SerializeField] private bool presetBool = false; [ContextMenu("Create Preset")] public void CreatePresetAsset() { Preset preset = new Preset(this); AssetDatabase.CreateAsset(preset, "Assets/Sandbox/PresetTest/Exports/CreatedExcludePresetTest.preset"); } }
ゲームオブジェクトにサンプルスクリプトをアタッチしてみます。
ExcludeFromPreset属性を設定したコンポーネントには右上のプリセットアイコンが表示されません。

またコードからのPreset作成の動作も変化します。
ExcludeFromPreset属性を設定していないクラスでCreateAssetを実行するとPresetが出力されます。


ExcludeFromPreset属性を設定したクラスでCreateAssetを実行するとPresetファイルは出力されますが、Unsupportのエラーが表示されて利用できません。

