# IObjectPool<T>

> Interface for ObjectPools.

## Definition

* **Type:** Interface
* **Namespace:** [UnityEngine.Pool](/engine/6000.6/script-reference/unityengine/pool.md)
* **Assembly:** UnityEngine.CoreModule

```csharp
public interface IObjectPool<T> where T : class
```

## Remarks

Additional Resources: [ObjectPool\<T>](/engine/6000.6/script-reference/unityengine/pool/objectpool1.md), [LinkedPool\<T>](/engine/6000.6/script-reference/unityengine/pool/linkedpool1.md).

## Properties

| Property                                                                                        | Description                                      |
| ----------------------------------------------------------------------------------------------- | ------------------------------------------------ |
| [CountInactive](/engine/6000.6/script-reference/unityengine/pool/iobjectpool1/countinactive.md) | The total amount of items currently in the pool. |

## Methods

| Method                                                                              | Description                                                                                                                 |
| ----------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [Clear](/engine/6000.6/script-reference/unityengine/pool/iobjectpool1/clear.md)     | Removes all pooled items. If the pool contains a destroy callback then it will be called for each item that is in the pool. |
| [Get](/engine/6000.6/script-reference/unityengine/pool/iobjectpool1/get.md)         | Get an instance from the pool. If the pool is empty then a new instance will be created.                                    |
| [Release](/engine/6000.6/script-reference/unityengine/pool/iobjectpool1/release.md) | Returns the instance back to the pool.                                                                                      |
