# AssetSettingsProvider

> 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.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor](/engine/6000.6/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule
* **Inherits from:** [SettingsProvider](/engine/6000.6/script-reference/unityeditor/settingsprovider.md)

```csharp
public class AssetSettingsProvider : SettingsProvider
```

## Examples

```csharp
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;
    }
}
```

## Constructors

| Constructor                                                                                                                                                                                                                                                            | Description                                                                                                                        |
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| [AssetSettingsProvider(System.String,System.Func\{UnityEditor.Editor},System.Collections.Generic.IEnumerable\{System.String})](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/ctor.md#assetsettingsprovider\(string-funceditor-ienumerablestring\)) | Creates a new AssetSettingsProvider so you can wrap legacy settings (that is, settings that previously appeared in the Inspector). |
| [AssetSettingsProvider(System.String,System.Func\{UnityEngine.Object})](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/ctor.md#assetsettingsprovider\(string-funcobject\))                                                                          | Creates a new AssetSettingsProvider so you can wrap legacy settings (that is, settings that previously appeared in the Inspector). |

## Properties

| Property                                                                                              | Description                                 |
| ----------------------------------------------------------------------------------------------------- | ------------------------------------------- |
| [settingsEditor](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/settingseditor.md) | Editor providing UI to modify the settings. |

## Methods

| Method                                                                                                | Description                                                                                                                                                                                                                                   |
| ----------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [OnActivate](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/onactivate.md)         | Overrides [SettingsProvider.OnActivate](/engine/6000.6/script-reference/unityeditor/settingsprovider/onactivate.md) for this AssetSettingsProvider.                                                                                           |
| [OnDeactivate](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/ondeactivate.md)     | Overrides [SettingsProvider.OnDeactivate](/engine/6000.6/script-reference/unityeditor/settingsprovider/ondeactivate.md) for this AssetSettingsProvider.                                                                                       |
| [OnFooterBarGUI](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/onfooterbargui.md) | Overrides [SettingsProvider.OnFooterBarGUI](/engine/6000.6/script-reference/unityeditor/settingsprovider/onfooterbargui.md) for this AssetSettingsProvider.                                                                                   |
| [OnGUI](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/ongui.md)                   | Overrides [SettingsProvider.OnGUI](/engine/6000.6/script-reference/unityeditor/settingsprovider/ongui.md) for this AssetSettingsProvider.                                                                                                     |
| [OnTitleBarGUI](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/ontitlebargui.md)   | Overrides [SettingsProvider.OnTitleBarGUI](/engine/6000.6/script-reference/unityeditor/settingsprovider/ontitlebargui.md) for this AssetSettingsProvider. This draws the button bar that contains the "add to preset" and the "help" buttons. |

## Static Methods

| Method                                                                                                                                | Description                                                                                                                          |
| ------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
| [CreateProviderFromAssetPath](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/createproviderfromassetpath.md)       | Create an [AssetSettingsProvider](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider.md) from an asset path.          |
| [CreateProviderFromObject](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/createproviderfromobject.md)             | Create an [AssetSettingsProvider](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider.md) from a settings object.      |
| [CreateProviderFromResourcePath](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider/createproviderfromresourcepath.md) | Create an [AssetSettingsProvider](/engine/6000.6/script-reference/unityeditor/assetsettingsprovider.md) from an asset resource path. |

## Inheritance

**Inherited Members:**

* [SettingsProvider.HasSearchInterest(string)](/engine/6000.6/script-reference/unityeditor/settingsprovider/hassearchinterest.md)
* [SettingsProvider.OnInspectorUpdate()](/engine/6000.6/script-reference/unityeditor/settingsprovider/oninspectorupdate.md)
* [SettingsProvider.Repaint()](/engine/6000.6/script-reference/unityeditor/settingsprovider/repaint.md)
* [SettingsProvider.FocusLost()](/engine/6000.6/script-reference/unityeditor/settingsprovider/focuslost.md)
* [SettingsProvider.GetSearchKeywordsFromGUIContentProperties\<T>()](/engine/6000.6/script-reference/unityeditor/settingsprovider/getsearchkeywordsfromguicontentproperties.md)
* [SettingsProvider.GetSearchKeywordsFromSerializedObject(SerializedObject)](/engine/6000.6/script-reference/unityeditor/settingsprovider/getsearchkeywordsfromserializedobject.md)
* [SettingsProvider.GetSearchKeywordsFromPath(string)](/engine/6000.6/script-reference/unityeditor/settingsprovider/getsearchkeywordsfrompath.md)
* [SettingsProvider.label](/engine/6000.6/script-reference/unityeditor/settingsprovider/label.md)
* [SettingsProvider.settingsPath](/engine/6000.6/script-reference/unityeditor/settingsprovider/settingspath.md)
* [SettingsProvider.scope](/engine/6000.6/script-reference/unityeditor/settingsprovider/scope.md)
* [SettingsProvider.keywords](/engine/6000.6/script-reference/unityeditor/settingsprovider/keywords.md)
* [SettingsProvider.guiHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/guihandler.md)
* [SettingsProvider.titleBarGuiHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/titlebarguihandler.md)
* [SettingsProvider.footerBarGuiHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/footerbarguihandler.md)
* [SettingsProvider.activateHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/activatehandler.md)
* [SettingsProvider.deactivateHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/deactivatehandler.md)
* [SettingsProvider.hasSearchInterestHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/hassearchinteresthandler.md)
* [SettingsProvider.inspectorUpdateHandler](/engine/6000.6/script-reference/unityeditor/settingsprovider/inspectorupdatehandler.md)
