# AssetProvider

> An ordered chain of asset providers used to load localized assets. Providers are tried in order and the first one to resolve an asset wins.

## Definition

* **Type:** Class
* **Namespace:** [Unity.Localization.Providers](/engine/6000.7/script-reference/unity/localization/providers.md)
* **Assembly:** UnityEngine.LocalizationRuntimeModule
* **Implements:** [ISerializationCallbackReceiver](/engine/6000.7/script-reference/unityengine/iserializationcallbackreceiver.md)

```csharp
public sealed class AssetProvider : ISerializationCallbackReceiver
```

## Remarks

The localization settings hold a single instance whose provider list is configurable in the inspector. Add providers such as [ReferencedAssetProvider](/engine/6000.7/script-reference/unity/localization/providers/referencedassetprovider.md) (direct references), [ResourceFolderProvider](/engine/6000.7/script-reference/unity/localization/providers/resourcefolderprovider.md), or an Addressables-backed provider from a package. Each provider resolves an [AssetKey](/engine/6000.7/script-reference/unity/localization/providers/assetkey.md) in its own way, so ordering decides which one answers a given address. The [AssetProvider.Selected](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/selected.md) provider is the default target for new content authored in the editor.

Additional Resources: [IAssetProvider](/engine/6000.7/script-reference/unity/localization/providers/iassetprovider.md), [AssetKey](/engine/6000.7/script-reference/unity/localization/providers/assetkey.md), [ReferencedAssetProvider](/engine/6000.7/script-reference/unity/localization/providers/referencedassetprovider.md), [ResourceFolderProvider](/engine/6000.7/script-reference/unity/localization/providers/resourcefolderprovider.md)

Build a chain, choose the default provider, then look one up by type.

## Examples

```csharp
using Unity.Localization.Providers;
using UnityEngine;

namespace Unity.Localization.Samples
{
    public class AssetProviderOverviewExample
    {
        public void Run()
        {
            var chain = new AssetProvider();
            chain.AddProvider(new ReferencedAssetProvider());
            chain.AddProvider(new ResourceFolderProvider());

            chain.Selected = chain.GetProvider<ReferencedAssetProvider>();

            Debug.Log(chain.Selected is ReferencedAssetProvider);   // True
        }
    }
}
```

## Constructors

| Constructor                                                                                           | Description             |
| ----------------------------------------------------------------------------------------------------- | ----------------------- |
| [AssetProvider()](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/ctor.md) | Creates an empty chain. |

## Properties

| Property                                                                                             | Description                                                                                        |
| ---------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| [Providers](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/providers.md) | The providers, in the order they are tried.                                                        |
| [Selected](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/selected.md)   | The selected provider: the entry used as the default for new content, or null when none is chosen. |

## Methods

| Method                                                                                                         | Description                                                                            |
| -------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [AddProvider](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/addprovider.md)       | Adds a provider to the end of the chain.                                               |
| [GetProvider](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/getprovider.md)       | Returns the first provider of the given type in the chain, or null when there is none. |
| [InsertProvider](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/insertprovider.md) | Inserts a provider at the given position in the chain.                                 |
| [RemoveProvider](/engine/6000.7/script-reference/unity/localization/providers/assetprovider/removeprovider.md) | Removes a provider from the chain.                                                     |
