AssetSettingsProvider is a specialization of the SettingsProvider class that converts legacy settings to Unified Settings. Legacy settings include any settings that used the Inspector to modify themselves, such as the *.asset files under the ProjectSettings folder. Under the hood, AssetSettingsProvider creates an Editor for specific Assets and builds the UI for the Settings window by wrapping the Editor.OnInspectorGUI() function. Internally we use this class to wrap our existing settings.
public class AssetSettingsProvider : SettingsProvider
Examples
using UnityEditor;using UnityEngine;// Create a new type of Settings Asset.class MyCustomSettings : ScriptableObject{ public const string k_MyCustomSettingsPath = "Assets/Editor/MyCustomSettings.asset"; [SerializeField] private int m_Number; [SerializeField] private string m_SomeString; internal static SerializedObject GetSettings() { var settings = AssetDatabase.LoadAssetAtPath<MyCustomSettings>(k_MyCustomSettingsPath); if (settings == null) { settings = ScriptableObject.CreateInstance<MyCustomSettings>(); settings.m_Number = 42; settings.m_SomeString = "The answer to the universe"; AssetDatabase.CreateAsset(settings, k_MyCustomSettingsPath); } return new SerializedObject(settings); }}[CustomEditor(typeof(MyCustomSettings))]class MyCustomSettingsEditor : Editor{ // Nothing to do, this uses the Generic Editor to display MyCustomSettings properties}class AssetSettingsProviderRegister{ [SettingsProvider] public static SettingsProvider CreateFromFilePath() { // Create an AssetSettingsProvider from a file path: var provider = AssetSettingsProvider.CreateProviderFromAssetPath("Project/AssetSettings/FromFile", MyCustomSettings.k_MyCustomSettingsPath); // Register keywords from the properties of MyCustomSettings provider.keywords = SettingsProvider.GetSearchKeywordsFromSerializedObject(new SerializedObject(AssetDatabase.LoadAllAssetsAtPath(MyCustomSettings.k_MyCustomSettingsPath))); return provider; } [SettingsProvider] public static SettingsProvider CreateFromSettingsObject() { // Create an AssetSettingsProvider from a settings object (UnityEngine.Object): var settingsObj = AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(MyCustomSettings.k_MyCustomSettingsPath); var provider = AssetSettingsProvider.CreateProviderFromObject("Project/AssetSettings/FromObject", settingsObj); // Register keywords from the properties of MyCustomSettings provider.keywords = SettingsProvider.GetSearchKeywordsFromSerializedObject(new SerializedObject(settingsObj)); return provider; } [SettingsProvider] public static SettingsProvider CreateFromSettingsFromFunctor() { // Create an AssetSettingsProvider from a functor that must return a UnityEngine.Object: var provider = new AssetSettingsProvider("Project/AssetSettings/FromFunctor", () => Editor.CreateEditor(AssetDatabase.LoadAssetAtPath<UnityEngine.Object>(MyCustomSettings.k_MyCustomSettingsPath))); // Register keywords from the properties of MyCustomSettings provider.keywords = SettingsProvider.GetSearchKeywordsFromSerializedObject(new SerializedObject(AssetDatabase.LoadAllAssetsAtPath(MyCustomSettings.k_MyCustomSettingsPath))); return provider; }}
Overrides SettingsProvider.OnTitleBarGUI for this AssetSettingsProvider. This draws the button bar that contains the "add to preset" and the "help" buttons.