# Subsystem

> A Subsystem is initialized from a SubsystemDescriptorWithProvider for a given Subsystem (Example, Input, Display, etc.) and provides an interface to interact with that given Subsystem until it is Destroyed. After a Subsystem is created it can be Started or Stopped to turn on and off functionality (and improve performance). The base type for subsystems only exposes this functionality; this class is designed to be a base class for derived classes that expose more functionality specific to a given Subsystem. Note: initializing a second Subsystem from the same SubsystemDescriptor will return a reference to the existing Subsystem as only one Subsystem is currently allowed for a single Subsystem provider. This subsystem base-class is deprecated. If you are creating a new subsystem type, derive from SubsystemWithProvider instead.

## Definition

* **Type:** Class
* **Namespace:** [UnityEngine](/engine/6000.0/script-reference/unityengine.md)
* **Assembly:** UnityEngine.SubsystemsModule
* **Implements:** [ISubsystem](/engine/6000.0/script-reference/unityengine/isubsystem.md)

> **Warning:**
>
> **Deprecated.** Use SubsystemWithProvider instead.

```csharp
public abstract class Subsystem : ISubsystem
```

## Properties

| Property                                                                    | Description                              |
| --------------------------------------------------------------------------- | ---------------------------------------- |
| [running](/engine/6000.0/script-reference/unityengine/subsystem/running.md) | Whether or not the subsystem is running. |

## Methods

| Method                                                                      | Description                            |
| --------------------------------------------------------------------------- | -------------------------------------- |
| [Destroy](/engine/6000.0/script-reference/unityengine/subsystem/destroy.md) | Destroys this instance of a subsystem. |
| [Start](/engine/6000.0/script-reference/unityengine/subsystem/start.md)     | Starts an instance of a subsystem.     |
| [Stop](/engine/6000.0/script-reference/unityengine/subsystem/stop.md)       | Stops an instance of a subsystem.      |
