AlicizaX/Client/Packages/com.alicizax.unity.resource/Runtime/Resource/ResourceModule.Pool.cs

72 lines
2.0 KiB
C#
Raw Normal View History

2025-01-23 19:06:48 +08:00
using AlicizaX.ObjectPool;
2025-04-28 19:45:45 +08:00
using AlicizaX;
2025-01-23 19:06:48 +08:00
namespace AlicizaX.Resource.Runtime
{
2025-04-28 19:45:45 +08:00
internal partial class ResourceModule
2025-01-23 19:06:48 +08:00
{
2025-04-28 19:45:45 +08:00
private IObjectPool<AssetObject> _assetPool;
2025-01-23 19:06:48 +08:00
/// <summary>
/// 获取或设置资源对象池自动释放可释放对象的间隔秒数。
/// </summary>
public float AssetAutoReleaseInterval
{
2025-04-28 19:45:45 +08:00
get => _assetPool.AutoReleaseInterval;
set => _assetPool.AutoReleaseInterval = value;
2025-01-23 19:06:48 +08:00
}
/// <summary>
/// 获取或设置资源对象池的容量。
/// </summary>
public int AssetCapacity
{
2025-04-28 19:45:45 +08:00
get => _assetPool.Capacity;
set => _assetPool.Capacity = value;
2025-01-23 19:06:48 +08:00
}
/// <summary>
/// 获取或设置资源对象池对象过期秒数。
/// </summary>
public float AssetExpireTime
{
2025-04-28 19:45:45 +08:00
get => _assetPool.ExpireTime;
set => _assetPool.ExpireTime = value;
2025-01-23 19:06:48 +08:00
}
/// <summary>
/// 获取或设置资源对象池的优先级。
/// </summary>
public int AssetPriority
{
2025-04-28 19:45:45 +08:00
get => _assetPool.Priority;
set => _assetPool.Priority = value;
2025-01-23 19:06:48 +08:00
}
2025-04-28 19:45:45 +08:00
2025-01-23 19:06:48 +08:00
/// <summary>
/// 卸载资源。
/// </summary>
/// <param name="asset">要卸载的资源。</param>
public void UnloadAsset(object asset)
{
2025-04-28 19:45:45 +08:00
if (_assetPool != null)
2025-01-23 19:06:48 +08:00
{
2025-04-28 19:45:45 +08:00
_assetPool.Unspawn(asset);
2025-01-23 19:06:48 +08:00
}
}
2025-04-28 19:45:45 +08:00
2025-01-23 19:06:48 +08:00
/// <summary>
/// 设置对象池管理器。
/// </summary>
2025-04-28 19:45:45 +08:00
/// <param name="objectPoolModule">对象池管理器。</param>
public void SetObjectPoolModule(IObjectPoolModule objectPoolModule)
2025-01-23 19:06:48 +08:00
{
2025-04-28 19:45:45 +08:00
if (objectPoolModule == null)
2025-01-23 19:06:48 +08:00
{
throw new GameFrameworkException("Object pool manager is invalid.");
}
2025-04-28 19:45:45 +08:00
_assetPool = objectPoolModule.CreateMultiSpawnObjectPool<AssetObject>("Asset Pool");
2025-01-23 19:06:48 +08:00
}
}
2025-04-28 19:45:45 +08:00
}