66 lines
1.9 KiB
C#
66 lines
1.9 KiB
C#
using System.Collections.Generic;
|
|
using YooAsset;
|
|
|
|
namespace TEngine
|
|
{
|
|
internal partial class ResourceManager
|
|
{
|
|
/// <summary>
|
|
/// 资源对象。
|
|
/// </summary>
|
|
private sealed class AssetObject : ObjectBase
|
|
{
|
|
private AssetHandle m_AssetHandle;
|
|
private ResourceManager m_ResourceManager;
|
|
|
|
|
|
public AssetObject()
|
|
{
|
|
m_AssetHandle = null;
|
|
}
|
|
|
|
public static AssetObject Create(string name, object target, object assetHandle, ResourceManager resourceManager)
|
|
{
|
|
if (assetHandle == null)
|
|
{
|
|
throw new GameFrameworkException("Resource is invalid.");
|
|
}
|
|
|
|
if (resourceManager == null)
|
|
{
|
|
throw new GameFrameworkException("Resource Manager is invalid.");
|
|
}
|
|
|
|
AssetObject assetObject = MemoryPool.Acquire<AssetObject>();
|
|
assetObject.Initialize(name, target);
|
|
assetObject.m_AssetHandle = (AssetHandle)assetHandle;
|
|
assetObject.m_ResourceManager = resourceManager;
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |