chicken_dy/Assets/WX-WASM-SDK/WXShortAudio.cs

109 lines
3.1 KiB
C#
Raw Normal View History

2022-08-01 03:47:37 +00:00
using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
namespace WeChatWASM
{
/// <summary>
/// 适合几秒短音频播放
/// </summary>
public class WXShortAudioPlayer
{
private static WXShortAudioPlayer instance = null;
public static WXShortAudioPlayer Instance
{
get
{
if (instance == null)
{
instance = new WXShortAudioPlayer();
}
return instance;
}
}
/// <summary>
/// 提前调用这个会预先去下载音频,减少延迟
/// </summary>
/// <param name="audios">音频列表填Assets下的路径如【”/audio/1.mp3“】</param>
public void PreLoadAudio(string[] audios)
{
WXPreLoadShortAudio(string.Join(",",audios));
}
/// <summary>
/// 播放短音频直接调用这个就好调用的话会停止掉其他通过WXShortAudioPlayer播放的短音频而从头播放这个音频
/// </summary>
/// <param name="audio">音频填Assets下的路径如”/audio/1.mp3”</param>
/// <param name="volume">音量,1最大0最小</param>
/// <param name="loop">是否循环</param>
public void StopOthersAndPlay(string audio,float volume, bool loop =false)
{
WXStopOthersAndPlay(audio,loop,volume);
}
/// <summary>
/// 停止短音频播放
/// </summary>
/// <param name="audio">音频填Assets下的路径如”/audio/1.mp3”</param>
public void Stop(string audio)
{
WXShortAudioPlayerStop(audio);
}
/// <summary>
/// 销毁短音频,节省内存
/// </summary>
/// <param name="audio"音频填Assets下的路径如”/audio/1.mp3”></param>
public void Destroy(string audio)
{
WXShortAudioPlayerDestroy(audio);
}
#region C#JS桥接方法
#if UNITY_WEBGL && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void WXPreLoadShortAudio(string audio);
#else
private static void WXPreLoadShortAudio(string audio) {
}
#endif
#if UNITY_WEBGL && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void WXStopOthersAndPlay(string audio,bool loop, float volume=1.0f);
#else
private static void WXStopOthersAndPlay(string audio, bool loop, float volume = 1.0f)
{
Debug.Log(audio+" , play");
}
#endif
#if UNITY_WEBGL && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void WXShortAudioPlayerStop(string audio);
#else
private static void WXShortAudioPlayerStop(string audio)
{
}
#endif
#if UNITY_WEBGL && !UNITY_EDITOR
[DllImport("__Internal")]
private static extern void WXShortAudioPlayerDestroy(string audio);
#else
private static void WXShortAudioPlayerDestroy(string audio)
{
}
#endif
#endregion
}
}