76 lines
1.9 KiB
C#
Raw Permalink Normal View History

2025-06-07 17:43:34 +08:00
using System;
using UnityEngine;
namespace FairyGUI
{
/// <summary>
///
/// </summary>
public class NAudioClip
{
public static Action<AudioClip> CustomDestroyMethod;
/// <summary>
///
/// </summary>
public DestroyMethod destroyMethod;
/// <summary>
///
/// </summary>
public AudioClip nativeClip;
/// <summary>
///
/// </summary>
/// <param name="audioClip"></param>
public NAudioClip(AudioClip audioClip)
{
nativeClip = audioClip;
}
/// <summary>
///
/// </summary>
public void Unload()
{
if (nativeClip == null)
return;
if (destroyMethod == DestroyMethod.Unload)
Resources.UnloadAsset(nativeClip);
else if (destroyMethod == DestroyMethod.Destroy)
UnityEngine.Object.DestroyImmediate(nativeClip, true);
else if (destroyMethod == DestroyMethod.Custom)
{
if (CustomDestroyMethod == null)
Debug.LogWarning("NAudioClip.CustomDestroyMethod must be set to handle DestroyMethod.Custom");
else
CustomDestroyMethod(nativeClip);
}
nativeClip = null;
}
/// <summary>
///
/// </summary>
/// <param name="audioClip"></param>
public void Reload(AudioClip audioClip)
{
if (nativeClip != null && nativeClip != audioClip)
Unload();
nativeClip = audioClip;
}
#if UNITY_2019_3_OR_NEWER
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.SubsystemRegistration)]
static void InitializeOnLoad()
{
CustomDestroyMethod = null;
}
#endif
}
}