This commit is contained in:
CortexCore
2023-10-29 15:27:13 +08:00
parent c5f638d9d2
commit c7b6ddbf70
73 changed files with 2158 additions and 494 deletions

View File

@@ -16,22 +16,43 @@ namespace BITKit
{
pool = new ObjectPool<T>(Spawn, OnGet, OnReturn, OnDestroy, maxSize: 16);
}
[Header(Constant.Header.Settings)]
[SerializeField] private int defaultCapacity = 16;
[Header(Constant.Header.Prefabs)]
public T prefab;
[SerializeField] private T prefab;
[Header(Constant.Header.Gameobjects)]
public Transform root;
[SerializeField] private Transform root;
private ObjectPool<T> pool;
private readonly List<T> _list=new();
private int _offset;
public T Get(T element = null, Transform _root = null)
{
if (_list.Count == defaultCapacity)
{
return _list[_offset = _offset/_list.Count+1];
}
if (element is not null)
prefab = element;
if (_root is not null)
root = _root;
return pool.Get();
var instance = pool.Get();
_list.Add(instance);
return instance;
}
public void Return(T element)
{
pool.Release(element);
_list.Remove(element);
}
public void Return(T element) => pool.Release(element);
private T Spawn() => Object.Instantiate(prefab, root);
private void OnGet(T element) => element.gameObject.SetActive(true);
private void OnReturn(T element) => element.gameObject.SetActive(false);