# OnDemandResourcesRequest

> Represents a request for On Demand Resources (ODR). It's an AsyncOperation and can be yielded in a coroutine.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine.iOS](/engine/6000.6/script-reference/unityengine/ios.md)
* **Assembly:** UnityEngine.CoreModule
* **Inherits from:** [AsyncOperation](/engine/6000.6/script-reference/unityengine/asyncoperation.md)
* **Implements:** [IDisposable](https://learn.microsoft.com/dotnet/api/system.idisposable)

```csharp
public sealed class OnDemandResourcesRequest : AsyncOperation, IDisposable
```

## Remarks

**NOTE:** only available on iOS.

Creating an [OnDemandResourcesRequest](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest.md) is equivalent to calling [NSBundleResourceRequest.beginAccessingResourcesWithCompletionHandler](https://developer.apple.com/reference/foundation/nsbundleresourcerequest/1614840-beginaccessingresources). The request will keep the on demand resource alive until either [OnDemandResourcesRequest.Dispose](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest/dispose.md)() is called or the request object is collected by a garbage collector, which is the equivalent of calling [NSBundleResourceRequest.endAccessingResources](https://developer.apple.com/reference/foundation/nsbundleresourcerequest/1614843-endaccessingresources).

## Examples

```csharp
using UnityEngine;
using UnityEngine.iOS;
using System;
using System.Collections;

public static class Loader
{
    public static IEnumerator LoadAsset(string resourceName)
    {
        // Create the request
        var request = OnDemandResources.PreloadAsync(new string[] { "Asset's ODR tag" });

        // Wait until request is completed
        yield return request;

        // Check for errors
        if (request.error != null)
            throw new Exception("ODR request failed: " + request.error);

        // Get path to the resource and use it
        var path = request.GetResourcePath(resourceName);
        Debug.Log(path);

        // Call Dispose() when resource is no longer needed.
        request.Dispose();
    }
}
```

## Properties

| Property                                                                                                       | Description                                   |
| -------------------------------------------------------------------------------------------------------------- | --------------------------------------------- |
| [error](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest/error.md)                     | Returns an error after operation is complete. |
| [loadingPriority](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest/loadingpriority.md) | Sets the priority for request.                |

## Methods

| Method                                                                                                         | Description                                                                             |
| -------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| [Dispose](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest/dispose.md)                 | Release all resources kept alive by On Demand Resources (ODR) request.                  |
| [GetResourcePath](/engine/6000.6/script-reference/unityengine/ios/ondemandresourcesrequest/getresourcepath.md) | Gets file system's path to the resource available in On Demand Resources (ODR) request. |

## Inheritance

**Inherited Members:**

* [AsyncOperation.isDone](/engine/6000.6/script-reference/unityengine/asyncoperation/isdone.md)
* [AsyncOperation.progress](/engine/6000.6/script-reference/unityengine/asyncoperation/progress.md)
* [AsyncOperation.priority](/engine/6000.6/script-reference/unityengine/asyncoperation/priority.md)
* [AsyncOperation.allowSceneActivation](/engine/6000.6/script-reference/unityengine/asyncoperation/allowsceneactivation.md)
* [AsyncOperation.completed](/engine/6000.6/script-reference/unityengine/asyncoperation/completed.md)
