効果音さえ再生できればいい人向けのSePlayerを用意しました。
効果音再生ライブラリを導入するほどでもない、小規模な用途向けのシンプルな実装です。
SePlayer はプロジェクトに入れるだけで使えます。
audioClip はインスペクタから参照するか Resources/Addressablesで読み込んでください。
実装に問題があれば連絡していただけると助かります。
利用例.cs
audioClip.PlayOneShot(); // 再生
audioClips.PlayOneShot(0.5f); // ランダムに1つ再生。音量は0.5
コード
SePlayer.cs
using UnityEngine;
public sealed class SePlayer : MonoBehaviour
{
private static AudioSource _audioSource;
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
private static void Initialize()
{
if (_audioSource != null) return;
var go = new GameObject(nameof(SePlayer));
_audioSource = go.AddComponent<AudioSource>();
DontDestroyOnLoad(go);
}
public static void PlayOneShot(AudioClip clip, float volume = 1f)
{
if (clip == null) return;
_audioSource.PlayOneShot(clip, volume);
}
public static void PlayOneShot(float volume, params AudioClip[] clips)
{
if (clips == null || clips.Length == 0) return;
PlayOneShot(clips[Random.Range(0, clips.Length)], volume);
}
public static void Pause() => _audioSource.Pause();
public static void UnPause() => _audioSource.UnPause();
public static void Stop() => _audioSource.Stop();
}
public static class SePlayerExtensions
{
public static void PlayOneShot(this AudioClip clip, float volume = 1f)
=> SePlayer.PlayOneShot(clip, volume);
public static void PlayOneShot(this AudioClip[] clips, float volume = 1f)
=> SePlayer.PlayOneShot(volume, clips);
}