# Checkout

> Checkout an asset or a list of assets from the version control system.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor.VersionControl](/engine/6000.0/script-reference/unityeditor/versioncontrol.md)
* **Assembly:** UnityEditor

## Checkout(AssetList, CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(AssetList assets, CheckoutMode mode)
```

### Parameters

**** (\[AssetList]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/assetlist)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(AssetList, CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(AssetList assets, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[AssetList]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/assetlist)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(string\[], CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(string[] assets, CheckoutMode mode)
```

### Parameters

**** (\[string\[]]\(https\://learn.microsoft.com/dotnet/api/system.string)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(string\[], CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(string[] assets, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[string\[]]\(https\://learn.microsoft.com/dotnet/api/system.string)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Object\[], CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Object[] assets, CheckoutMode mode)
```

### Parameters

**** (\[Object\[]]\(/engine/6000.0/script-reference/unityengine/object)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Object\[], CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Object[] assets, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[Object\[]]\(/engine/6000.0/script-reference/unityengine/object)): List of assets to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Asset, CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Asset asset, CheckoutMode mode)
```

### Parameters

**** (\[Asset]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/asset)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Asset, CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Asset asset, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[Asset]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/asset)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(string, CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(string asset, CheckoutMode mode)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(string, CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(string asset, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Object, CheckoutMode)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Object asset, CheckoutMode mode)
```

### Parameters

**** (\[Object]\(/engine/6000.0/script-reference/unityengine/object)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".

## Checkout(Object, CheckoutMode, ChangeSet)

Checkout an asset or a list of assets from the version control system.

```csharp
public static Task Checkout(Object asset, CheckoutMode mode, ChangeSet changeset)
```

### Parameters

**** (\[Object]\(/engine/6000.0/script-reference/unityengine/object)): Asset to checkout.**** (\[CheckoutMode]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/checkoutmode)): Tell the Provider to checkout just the asset file, the .meta file or both.**** (\[ChangeSet]\(/engine/6000.0/script-reference/unityeditor/versioncontrol/changeset)): Tell the Provider to checkout the assets to a specific changeset.

### Returns

| Type                                                                       | Description |
| -------------------------------------------------------------------------- | ----------- |
| [Task](/engine/6000.0/script-reference/unityeditor/versioncontrol/task.md) |             |

### Remarks

Some version control systems like Perforce or Plastic SCM require an asset to be checked out before it can be edited.

```csharp
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class EditorScript : MonoBehaviour
{
    [MenuItem("Version Control/Checkout")]
    public static void ExampleCheckout()
    {
        AssetList assets = new AssetList();
        assets.Add(Provider.GetAssetByPath("Assets/ExampleAsset.cs"));
        ChangeSet changeset = new ChangeSet("Description", "1111");
        Task t = Provider.Checkout(assets, CheckoutMode.Both, changeset);
        t.Wait();
    }
}
```

The code above will checkout the "ExampleAsset.cs" asset and move it to a changeset with an ID of "1111".
