using System.Collections.Generic; using YooAsset; namespace TEngine { internal partial class ResourceManager { /// /// 资源对象。 /// 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.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; } } } } }