# CanOpenForEdit

> Query which of the provided Asset files can be opened for editing in version control and are not remotely locked or otherwise unavailable.

## Definition

* **Type:** Method
* **Namespace:** [UnityEditor](/engine/7000.0/script-reference/unityeditor.md)
* **Assembly:** UnityEditor.CoreModule

## CanOpenForEdit(string\[], List\<string>, StatusQueryOptions)

Query which of the provided Asset files can be opened for editing in version control and are not remotely locked or otherwise unavailable.

```csharp
public static void CanOpenForEdit(string[] assetOrMetaFilePaths, List<string> outNotEditablePaths, StatusQueryOptions statusQueryOptions = StatusQueryOptions.UseCachedIfPossible)
```

### Parameters

**** (\[string\[]]\(https\://learn.microsoft.com/dotnet/api/system.string)): Paths to Assets or their .meta files, relative to the project folder.**** (\[List\<string>]\(https\://learn.microsoft.com/dotnet/api/system.collections.generic.list-1)): Destination list of non-editable Asset paths.**** (\[StatusQueryOptions]\(/engine/7000.0/script-reference/unityeditor/statusqueryoptions)): Specifies how Unity should query the version control system. The default value is [StatusQueryOptions.UseCachedIfPossible](/engine/7000.0/script-reference/unityeditor/statusqueryoptions/usecachedifpossible.md).

### Remarks

This variant of the `CanOpenForEdit` function can query multiple Asset paths at once. It writes paths for Assets that are not 'available for edit' into the `outNotEditablePaths` list.

## CanOpenForEdit(Object, StatusQueryOptions)

Checks whether an asset object can be opened for editing in version control.

```csharp
public static bool CanOpenForEdit(Object assetObject, StatusQueryOptions statusOptions)
```

### Parameters

**** (\[Object]\(/engine/7000.0/script-reference/unityengine/object)): The asset object to check.**** (\[StatusQueryOptions]\(/engine/7000.0/script-reference/unityeditor/statusqueryoptions)): How to query the version control system. These options affect the speed and accuracy of the query. The default value is [StatusQueryOptions.UseCachedIfPossible](/engine/7000.0/script-reference/unityeditor/statusqueryoptions/usecachedifpossible.md).

### Returns

| Type                                                          | Description                                                                                     |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the version control system considers the asset available for editing. Otherwise, false. |

### Remarks

Use this method before you modify an asset, to check whether the version control system lets you edit it. An asset isn't available if another user has locked it exclusively, or if it's otherwise unavailable. For details on how version control systems decide this, refer to [AssetDatabase.IsOpenForEdit](/engine/7000.0/script-reference/unityeditor/assetdatabase/isopenforedit.md). To make an asset editable, use [AssetDatabase.MakeEditable](/engine/7000.0/script-reference/unityeditor/assetdatabase/makeeditable.md).

## CanOpenForEdit(string, StatusQueryOptions)

Checks whether the asset at a path can be opened for editing in version control.

```csharp
public static bool CanOpenForEdit(string assetOrMetaFilePath, StatusQueryOptions statusOptions)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The project-relative path of the asset file or its .meta file.**** (\[StatusQueryOptions]\(/engine/7000.0/script-reference/unityeditor/statusqueryoptions)): How to query the version control system. These options affect the speed and accuracy of the query. The default value is [StatusQueryOptions.UseCachedIfPossible](/engine/7000.0/script-reference/unityeditor/statusqueryoptions/usecachedifpossible.md).

### Returns

| Type                                                          | Description                                                                                     |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the version control system considers the asset available for editing. Otherwise, false. |

### Remarks

Use this method before you modify an asset, to check whether the version control system lets you edit it. An asset isn't available if another user has locked it exclusively, or if it's otherwise unavailable. For details on how version control systems decide this, refer to [AssetDatabase.IsOpenForEdit](/engine/7000.0/script-reference/unityeditor/assetdatabase/isopenforedit.md). To make an asset editable, use [AssetDatabase.MakeEditable](/engine/7000.0/script-reference/unityeditor/assetdatabase/makeeditable.md).

## CanOpenForEdit(Object, string, StatusQueryOptions)

Checks whether an asset object can be opened for editing in version control and gets the reason if it isn't.

```csharp
public static bool CanOpenForEdit(Object assetObject, out string message, StatusQueryOptions statusOptions)
```

### Parameters

**** (\[Object]\(/engine/7000.0/script-reference/unityengine/object)): The asset object to check.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): When the method returns, contains the reason why the asset isn't available for editing, if there is one.**** (\[StatusQueryOptions]\(/engine/7000.0/script-reference/unityeditor/statusqueryoptions)): How to query the version control system. These options affect the speed and accuracy of the query. The default value is [StatusQueryOptions.UseCachedIfPossible](/engine/7000.0/script-reference/unityeditor/statusqueryoptions/usecachedifpossible.md).

### Returns

| Type                                                          | Description                                                                                     |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the version control system considers the asset available for editing. Otherwise, false. |

### Remarks

Use this method before you modify an asset, to check whether the version control system lets you edit it. An asset isn't available if another user has locked it exclusively, or if it's otherwise unavailable. For details on how version control systems decide this, refer to [AssetDatabase.IsOpenForEdit](/engine/7000.0/script-reference/unityeditor/assetdatabase/isopenforedit.md). To make an asset editable, use [AssetDatabase.MakeEditable](/engine/7000.0/script-reference/unityeditor/assetdatabase/makeeditable.md).

## CanOpenForEdit(string, string, StatusQueryOptions)

Checks whether the asset at a path can be opened for editing in version control and gets the reason if it isn't.

```csharp
public static bool CanOpenForEdit(string assetOrMetaFilePath, out string message, StatusQueryOptions statusOptions)
```

### Parameters

**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): The project-relative path of the asset file or its .meta file.**** (\[string]\(https\://learn.microsoft.com/dotnet/api/system.string)): When the method returns, contains the reason why the asset isn't available for editing, if there is one.**** (\[StatusQueryOptions]\(/engine/7000.0/script-reference/unityeditor/statusqueryoptions)): How to query the version control system. These options affect the speed and accuracy of the query. The default value is [StatusQueryOptions.UseCachedIfPossible](/engine/7000.0/script-reference/unityeditor/statusqueryoptions/usecachedifpossible.md).

### Returns

| Type                                                          | Description                                                                                     |
| ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------- |
| [bool](https://learn.microsoft.com/dotnet/api/system.boolean) | True if the version control system considers the asset available for editing. Otherwise, false. |

### Remarks

Use this method before you modify an asset, to check whether the version control system lets you edit it. An asset isn't available if another user has locked it exclusively, or if it's otherwise unavailable. For details on how version control systems decide this, refer to [AssetDatabase.IsOpenForEdit](/engine/7000.0/script-reference/unityeditor/assetdatabase/isopenforedit.md). To make an asset editable, use [AssetDatabase.MakeEditable](/engine/7000.0/script-reference/unityeditor/assetdatabase/makeeditable.md).
