using UnityEngine;
using System.Collections;
using System.Runtime.InteropServices;
namespace WeChatWASM
{
///
/// 适合几秒短音频播放
///
public class WXShortAudioPlayer
{
private static WXShortAudioPlayer instance = null;
public static WXShortAudioPlayer Instance
{
get
{
if (instance == null)
{
instance = new WXShortAudioPlayer();
}
return instance;
}
}
///
/// 提前调用这个会预先去下载音频,减少延迟
///
/// 音频列表,填Assets下的路径,如【”/audio/1.mp3“】
public void PreLoadAudio(string[] audios)
{
WXPreLoadShortAudio(string.Join(",",audios));
}
///
/// 播放短音频直接调用这个就好,调用的话会停止掉其他通过WXShortAudioPlayer播放的短音频,而从头播放这个音频
///
/// 音频,填Assets下的路径,如”/audio/1.mp3”
/// 音量,1最大,0最小
/// 是否循环
public void StopOthersAndPlay(string audio,float volume, bool loop =false)
{
WXStopOthersAndPlay(audio,loop,volume);
}
///
/// 停止短音频播放
///
/// 音频,填Assets下的路径,如”/audio/1.mp3”
public void Stop(string audio)
{
WXShortAudioPlayerStop(audio);
}
///
/// 销毁短音频,节省内存
///
///
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
}
}