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

109 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}
}