76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
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
|
|
}
|
|
}
|