オブジェクトにアタッチして使用、即座にならすか任意のタイミングで鳴らすかなどはパラメータで調整
ボリュームなどの共通で使用するパラメータはstatic変数で管理
using System.Collections; using System.Collections.Generic; using UnityEngine; public class AudioPart : MonoBehaviour{ [SerializeField] AudioClip AClip; [SerializeField] bool Is3D = false; [SerializeField] bool IsLoop = false; [SerializeField] bool IsPlayOnStart = true; public static float BGMVolume {get;set;} = 1.0f; public static float SEVolume {get;set;} = 1.0f; AudioSource Audio; void Start(){ var audio = gameObject.AddComponent(); audio.clip = AClip; audio.volume = (!Is3D && IsLoop) ? AudioPart.BGMVolume : AudioPart.SEVolume; audio.loop = IsLoop; audio.spatialBlend = Is3D ? 1 : 0; audio.maxDistance = 70; //1マスごとの距離は5 audio.playOnAwake = false; audio.rolloffMode = AudioRolloffMode.Linear; Audio = audio; if(IsPlayOnStart) audio.Play(); } public void Play(){ Audio.Play(); } }