Unclaimed Package Is this your package? Claim it to unlock full analytics and manage your listing.
Claim This Package

Install via UPM

Add to Unity Package Manager using this URL

https://www.pkglnk.dev/track/unitaskobjectpool.git?path=Assets/Bg/UniTaskObjectPool

README

UniTaskObjectPool

openupm

ObjectPool for UniTask.

AsyncObjectPool in this package conform to UnityEngine.Pool.ObjectPool

Differences is bellow

  • Create, OnGet and OnRelease return value is UniTask
  • Create, OnGet and OnRelease argument includes CancellationToken

Installation

Dependency

Using UniTask in the package, UniTask must be added in the project.

UniTask

PackageManager

Install via git url

Open Window/Package Manager, and add package from git URL...

https://github.com/k-okawa/UniTaskObjectPool.git?path=Assets/Bg/UniTaskObjectPool

Install via OpenUPM

openupm add com.bg.unitaskobjectpool

UnityPackage

You can download unity package in release page.

Sample Code

public class SamplePoolObj : IDisposable
{
    public static int globalIndex = 0;
    public readonly int id;
    
    public SamplePoolObj()
    {
        id = ++globalIndex;
    }
    
    public async UniTask GetLog(CancellationToken ct)
    {
        await UniTask.Delay(TimeSpan.FromSeconds(0.02f), cancellationToken: ct);
        Debug.Log($"Get from pool id:{id}");
    }
    
    public async UniTask ReleaseLog(CancellationToken ct)
    {
        await UniTask.Delay(TimeSpan.FromSeconds(0.02f), cancellationToken: ct);
        Debug.Log($"Release id:{id}");
    }

    public void Dispose()
    {
        Debug.Log($"Disposed id:{id}");
    }
}

public static async UniTask<SamplePoolObj> CreateFunc(CancellationToken ct)
{
    await UniTask.Delay(TimeSpan.FromSeconds(0.02f), cancellationToken: ct);
    return new SamplePoolObj();
}

public static UniTask OnGet(SamplePoolObj element, CancellationToken ct)
{
    return element.GetLog(ct);
}

public static UniTask OnRelease(SamplePoolObj element, CancellationToken ct)
{
    return element.ReleaseLog(ct);
}

public static void Destroy(SamplePoolObj element)
{
    element.Dispose();
}
public async UniTask Sample(CancellationToken ct) 
{
    var objectPool = new AsyncObjectPool<SamplePoolObj>(
                    CreateFunc,
                    OnGet,
                    OnRelease,
                    Destroy,
                    true, 10, 100
                );
    
    var element = await objectPool.Get(ct);
    await objectPool.Release(element, ct);
    
    var pooledObject = await objectPool.GetPooledObject(ct);
    // call element function sample
    await pooledObject.Get().GetLog(ct);
    // return to pool
    await pooledObject.DisposeAsync(ct);
}
Total Installs
0
Last 30 days
Unique IPs
0
Approximate users

Installs Over Time

Operating Systems

No data yet

Top Countries

No data yet

Git Versions

No data yet

Embed Install Badge

Add an install count badge to your README

Style
Preview
pkglnk installs badge
Markdown
[![pkglnk installs](https://www.pkglnk.dev/badge/unitaskobjectpool.svg?style=pkglnk)](https://www.pkglnk.dev/pkg/unitaskobjectpool)
HTML
<a href="https://www.pkglnk.dev/pkg/unitaskobjectpool"><img src="https://www.pkglnk.dev/badge/unitaskobjectpool.svg?style=pkglnk" alt="pkglnk installs"></a>

Comments

No comments yet. Be the first!