public virtual void AddToPool(T obj)
    {
        if (_pool == null)
        {
            _pool = new List <T>();
        }

        _pool.Add(obj);
        OnAddToPool?.Invoke(obj);
    }
    public virtual void AddToPool(params T[] objs)
    {
        if (_pool == null)
        {
            _pool = new List <T>();
        }

        foreach (T obj in objs)
        {
            _pool.Add(obj);
            OnAddToPool?.Invoke(obj);
        }
    }