com.alicizax.unity.framework/Runtime/Resource/Resource/ResourceModule.AssetObject.cs
2025-10-11 15:18:09 +08:00

70 lines
1.9 KiB
C#

using System.Buffers;
using System.Collections.Generic;
using AlicizaX.ObjectPool;
using AlicizaX;
using YooAsset;
namespace AlicizaX.Resource.Runtime
{
internal partial class ResourceModule
{
/// <summary>
/// 资源对象。
/// </summary>
private sealed class AssetObject : ObjectBase
{
private AssetHandle m_AssetHandle;
private ResourceModule _mResourceModule;
public AssetObject()
{
m_AssetHandle = null;
}
public static AssetObject Create(string name, object target, object assetHandle, ResourceModule resourceModule)
{
if (assetHandle == null)
{
throw new GameFrameworkException("Resource is invalid.");
}
if (resourceModule == null)
{
throw new GameFrameworkException("Resource Manager is invalid.");
}
AssetObject assetObject = MemoryPool.Acquire<AssetObject>();
assetObject.Initialize(name, target);
assetObject.m_AssetHandle = (AssetHandle)assetHandle;
assetObject._mResourceModule = resourceModule;
return assetObject;
}
public override void Clear()
{
base.Clear();
m_AssetHandle = null;
}
protected internal override void OnUnspawn()
{
base.OnUnspawn();
}
protected internal override void Release(bool isShutdown)
{
if (!isShutdown)
{
AssetHandle handle = m_AssetHandle;
if (handle is { IsValid: true })
{
handle.Dispose();
}
handle = null;
}
}
}
}
}