# isConnected

> Tests whether the VersionControlObject is connected to an underlying version control system.

## Definition

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

```csharp
public virtual bool isConnected { get; }
```

### Remarks

There are various reasons why your VersionControlObject may not be connected. For example:

* Your VCS might need to be configured before establishing connection.
* [VersionControlObject.OnActivate](/engine/6000.6/script-reference/unityeditor/versioncontrol/versioncontrolobject/onactivate.md) might start a background thread that takes some time to connect.
* The connection might get broken because of network issues.

In all these cases this property will  return **false**.

```csharp
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

[VersionControl("Custom")]
public class CustomVersionControlObject : VersionControlObject, ISettingsInspectorExtension
{
    bool m_Active;
    bool m_IsConnected;

    public override bool isConnected => m_IsConnected;

    public void OnEnable()
    {
        // m_Active will be false if CustomVersionControlObject has just been activated.
        // It will be true if OnEnable was called after domain reload. In that case we want to reestablish connection.
        if (m_Active)
            Connect();
    }

    public void OnDisable()
    {
        // Let's assume that domain reload kills connection to underlying VCS.
        Disconnect();
    }

    public override void OnActivate()
    {
        m_Active = true;
        // Let's try to automatically establish connection to underlying VCS.
        // It will not work the first time CustomVersionControlObject is activated because username is not configured yet.
        // However it will work on subsequent Unity startup.
        Connect();
    }

    public override void OnDeactivate()
    {
        m_Active = false;
        Disconnect();
    }

    public void OnInspectorGUI()
    {
        var oldUsername = EditorUserSettings.GetConfigValue("vcCustomUsername");
        var newUsername = EditorGUILayout.TextField("Username (hint: TestUser):", oldUsername);
        if (newUsername != oldUsername)
            EditorUserSettings.SetConfigValue("vcCustomUsername", newUsername);

        EditorGUILayout.LabelField("Connected:", m_IsConnected ? "Yes" : "No");

        if (GUILayout.Button("Connect"))
            Connect();
    }

    void Connect()
    {
        var username = EditorUserSettings.GetConfigValue("vcCustomUsername");
        m_IsConnected = username == "TestUser";
    }

    void Disconnect()
    {
        m_IsConnected = false;
    }
}
```

Additional Resources: [VersionControlObject](/engine/6000.6/script-reference/unityeditor/versioncontrol/versioncontrolobject.md), [ISettingsInspectorExtension](/engine/6000.6/script-reference/unityeditor/versioncontrol/isettingsinspectorextension.md).
