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

62 lines
1.5 KiB
C#
Raw Normal View History

2025-09-05 19:46:30 +08:00
using AlicizaX;
using YooAsset;
namespace AlicizaX.Audio.Runtime
{
/// <summary>
/// 音频数据。
/// </summary>
2026-04-21 15:45:27 +08:00
public class AudioData : IMemory
2025-09-05 19:46:30 +08:00
{
/// <summary>
/// 资源句柄。
/// </summary>
public AssetHandle AssetHandle { private set; get; }
/// <summary>
/// 是否使用对象池。
/// </summary>
public bool InPool { private set; get; } = false;
/// <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;
return ret;
}
/// <summary>
/// 回收音频数据。
/// </summary>
/// <param name="audioData"></param>
internal static void DeAlloc(AudioData audioData)
{
2026-04-21 15:45:27 +08:00
if (audioData == null)
return;
MemoryPool.Release(audioData);
}
public void Clear()
{
bool inPool = InPool;
AssetHandle handle = AssetHandle;
InPool = false;
AssetHandle = null;
if (!inPool && handle is { IsValid: true })
handle.Dispose();
2025-09-05 19:46:30 +08:00
}
}
}