This commit is contained in:
CortexCore
2024-05-31 01:23:15 +08:00
parent c798b224be
commit 299082fe27
164 changed files with 3604 additions and 2018 deletions

View File

@@ -22,6 +22,7 @@ namespace BITKit
public Action<T> OnGet { get; set; } = x=>x.gameObject.SetActive(true);
public Action<T> OnReturn { get; set; } = x=>x.gameObject.SetActive(false);
public Action<T> OnDestroy { get; set; } = x=>Object.Destroy(x.gameObject);
public Action<T> OnSpawn { get; set; }
private ObjectPool<T> pool=> _pool ??=
new ObjectPool<T>
(Spawn, OnGet, OnReturn, OnDestroy,defaultCapacity:DefaultCapacity, maxSize:DefaultCapacity);
@@ -71,10 +72,21 @@ namespace BITKit
public void Return(T element)
{
pool.Release(element);
_list.Remove(element);
try
{
pool.Release(element);
}
catch (InvalidOperationException){}
_list.TryRemove(element);
}
private T Spawn() => Object.Instantiate(prefab, root);
private T Spawn()
{
var newObject = Object.Instantiate(prefab, root);
OnSpawn?.Invoke(newObject);
return newObject;
}
#region
private readonly ConcurrentDictionary<string, T> _dictionary=new();