com.alicizax.unity.framework/Runtime/Audio/AudioData.cs

68 lines
1.7 KiB
C#
Raw Normal View History

2025-09-05 19:46:30 +08:00
using AlicizaX;
using YooAsset;
namespace AlicizaX.Audio.Runtime
{
/// <summary>
/// 音频数据。
/// </summary>
public class AudioData : MemoryObject
{
/// <summary>
/// 资源句柄。
/// </summary>
public AssetHandle AssetHandle { private set; get; }
/// <summary>
/// 是否使用对象池。
/// </summary>
public bool InPool { private set; get; } = false;
public override void InitFromPool()
{
}
/// <summary>
/// 回收到对象池。
/// </summary>
public override void RecycleToPool()
{
if (!InPool)
{
AssetHandle.Dispose();
}
InPool = false;
AssetHandle = null;
}
/// <summary>
/// 生成音频数据。
/// </summary>
/// <param name="assetHandle">资源操作句柄。</param>
/// <param name="inPool">是否使用对象池。</param>
/// <returns>音频数据。</returns>
internal static AudioData Alloc(AssetHandle assetHandle, bool inPool)
{
AudioData ret = MemoryPool.Acquire<AudioData>();
ret.AssetHandle = assetHandle;
ret.InPool = inPool;
ret.InitFromPool();
return ret;
}
/// <summary>
/// 回收音频数据。
/// </summary>
/// <param name="audioData"></param>
internal static void DeAlloc(AudioData audioData)
{
if (audioData != null)
{
MemoryPool.Release(audioData);
audioData.RecycleToPool();
}
}
}
}