com.alicizax.unity.framework/Runtime/ABase/ObjectPool/ObjectPoolBase.cs
陈思海 e42be670fe 彻底重构ObjectPoolService模块
重构ObjectPoolService模块
去掉过度设计移除旧的容器列表
使用自定义Hash提高整体性能速度
单线程高吞吐
2026-04-22 13:04:31 +08:00

54 lines
1.4 KiB
C#

using System;
using System.Collections.Generic;
namespace AlicizaX.ObjectPool
{
public abstract class ObjectPoolBase
{
private readonly string m_Name;
public ObjectPoolBase() : this(null) { }
public ObjectPoolBase(string name)
{
m_Name = name ?? string.Empty;
}
public string Name => m_Name;
public string FullName => new TypeNamePair(ObjectType, m_Name).ToString();
public abstract Type ObjectType { get; }
public abstract int Count { get; }
public abstract bool AllowMultiSpawn { get; }
public abstract float AutoReleaseInterval { get; set; }
public abstract int Capacity { get; set; }
public abstract float ExpireTime { get; set; }
public abstract int Priority { get; set; }
public virtual int ReleasePerFrameBudget
{
get => 8;
set { }
}
public abstract void Release();
public abstract void Release(int toReleaseCount);
public abstract void ReleaseAllUnused();
public abstract ObjectInfo[] GetAllObjectInfos();
public abstract void GetAllObjectInfos(List<ObjectInfo> results);
internal abstract void Update(float elapseSeconds, float realElapseSeconds);
internal abstract void Shutdown();
internal virtual void OnLowMemory()
{
ReleaseAllUnused();
}
}
}