🎯 Object Pool Plugin for Unreal Engine

Object Pool Plugin

Boost runtime performance by recycling Actors, Pawns, Characters, and Projectiles with this highly optimized Object Pool system for Unreal Engine.


πŸ“¦ Installation

Make sure the plugin is downloaded and enabled through the Epic Games Launcher.


🧱 Pooled Classes

You must reparent your Blueprint classes to one of the specialized base classes provided by the plugin:

These inherit Unreal’s default types and are fully compatible with the pooling system.

Pooled Classes


πŸ” Pool Lifecycle Events

Use these custom Blueprint events instead of the default BeginPlay and EndPlay:

These allow clean resets without destroying the object.

Pool Events


🧩 Pool Components

Four component types are included:

Component Description
UObjectPool Manages pooled APooledActor instances
UPawnPool Manages pooled APooledPawn instances
UCharacterPool Manages pooled APooledCharacter instances
USharedObjectPool Manages multiple classes at once

Component Types

⚠️ Do NOT add a Pool Component to a class it spawns. This causes infinite recursion!


βš™οΈ Component Properties

Each Pool Component offers the following properties:

Advanced flags:

Component Details


🧠 Spawn Nodes (Blueprint)

Use the following Blueprint nodes to spawn actors from pool:

⚠️ As of v1.9.0, you must select the same class on both the Pool Component and the Spawn node.

Spawn 1 Spawn 2


πŸ”« Projectile Support

🚫 Default UE5 ProjectileMovement is NOT compatible with pooling.

Use the plugin's PooledProjectileComponent for pooled movement. For visual projectiles without simulation, use the PooledSplineProjectileComponent.

Projectile Setup


πŸŒ€ Spline Projectiles

The PooledSplineProjectileComponent uses splines and sphere traces to simulate bullet travel without physics.

Spline Setup 1 Spline Setup 2 Spline Setup 3

To apply spline logic to your pooled projectiles:

  1. Add a Spline Component to your level.
  2. Assign it to the PooledSplineProjectileComponent instance.

Spline Assignment

Once active, the bullet will automatically follow the assigned spline path.

Bullet Follow


✨ Niagara Systems

To use Niagara effects with pooled actors:

Niagara


πŸ§ͺ C++ Developer API

Core Functions:

UFUNCTION(BlueprintCallable)
void InitializeObjectPool();

UFUNCTION(BlueprintCallable)
void EmptyObjectPool();

UFUNCTION(BlueprintCallable)
void GetObjectsFromPool(TArray<APooledActor*>& Spawned, TArray<APooledActor*>& Inactive);

UFUNCTION(BlueprintCallable)
APooledActor* GetInactiveObject();

UFUNCTION(BlueprintCallable)
static APooledActor* BeginDeferredSpawnFromPool(...);

UFUNCTION(BlueprintCallable)
static APooledActor* FinishDeferredSpawnFromPool(...);

Also includes templated utility methods:

template <typename T>
TArray<T*> GetObjectsFromPool() const;

All pool components follow the same API interface (UObjectPool, UPawnPool, UCharacterPool, USharedObjectPool).


🧠 Best Practices