とりあえず音を鳴らす
SoundManagerクラス
using UnityEngine;
//サウンド管理クラス
public class SoundManager : MonoBehaviour
{
    private AudioSource _audioSource;   //音を鳴らすためのコンポーネント
    private void Awake()
    {
        _audioSource = GetComponent<AudioSource>(); //同じゲームオブジェクトから取得
    }
    //音を鳴らす
    public void PlaySE()
    {
        _audioSource.Play();
    }
}このコードは、必要最低限の効果音を鳴らすことが出来るクラスです!
まずはこのコードを、プロジェクトに追加します。
Unity側の設定

コードを追加したら、画像のようにSoundManagerというゲームオブジェクトを作成します!
①Hierarchyで右クリック→CreateEmptyを選択→GameObjectのにSoundManagerに変更
②作成したGameObjectを選択→AddComponentを左クリック→AudioSourceを探して選択
③AudioSourceコンポーネントのAudioClipに鳴らしたいSEのデータをアタッチする
④再度AddComponentを左クリック→追加したSoundManagerを探して選択
//音を鳴らす
    public void PlaySE()
    {
        _audioSource.Play();
    }あとは鳴らしたいタイミングで、この関数(メソッド)を呼び出すだけです。
この後は、もう少し使い勝手のいいSoundManagerを実装していきます!
もう少し使いやすくする
先ほどの、SoundManagerクラスは、1種類の音しか再生出来ず、使い勝手が良いとは言えません。ここからは、複数の効果音を選択して、鳴らすことが出来るように実装していきます!
SoundManagerクラス
using UnityEngine;
//サウンド管理クラス
public class SoundManager : MonoBehaviour
{
    private AudioSource _audioSource;   //音を鳴らすためのコンポーネント
    private AudioClip _currentAudioClip;//最後に鳴らした音
    [SerializeField] private SoundData _soundData;  //サウンドデータ
    private void Awake()
    {
        _audioSource = GetComponent<AudioSource>(); //同じゲームオブジェクトから取得
    }
    //SoundDataからAudioClipを取得する
    private AudioClip GetAudioClip_SE(string tag)
    {
        //データを1つずつ調べる
        foreach (var data in _soundData.GetSoundSource_SE_List)
        {
            //tagが一致していたら検索を終了してデータを返す
            if (data.tag == tag)
            {
                return data.audioClip;
            }
        }
        //tagが一致しなければNullを返す
        return null;
    }
    //音を鳴らす
    public void PlaySE(string tag)
    {
        //AudioClipを取得する
        _currentAudioClip = GetAudioClip_SE(tag);
        //サウンドデータがあるかを確認する
        if (_currentAudioClip == null) { Debug.Log("サウンドデータがありません"); return; }
        //サウンドを再生する
        _audioSource.PlayOneShot(_currentAudioClip);
    }
    //テスト用Update関数(本来は別クラスで実装する)
    private void Update()
    {
        //マウスが左クリックされたら
        if (Input.GetMouseButtonDown(0))
        {
            PlaySE("test1");
        }
        //マウスが右クリックされたら
        if (Input.GetMouseButtonDown(1))
        {
            PlaySE("test2");
        }
    }
}先ほどの、SoundManagerに少し追記してみました!
機能としては、呼び出したい効果音をtag(string)で指定して鳴らすことが出来ます。
効果音のデータは、次のScriptableObjectで実装した、SoundDataで管理をしています!
SoundDataクラス
using System;
using System.Collections.Generic;
using UnityEngine;
//サウンドデータ構造体
[Serializable]
public struct SoundSource_SE
{
    public string tag;          //検索用のタグ
    public AudioClip audioClip; //サウンドデータ
}
//サウンドデータ管理
[CreateAssetMenu(menuName = "ScriptableObject/SoundData", fileName = "SoundData")]
public class SoundData : ScriptableObject
{
    [SerializeField] private List<SoundSource_SE> _soundSource_SE_List; //サウンドデータ構造体のリスト
    //SEのデータリストを取得する
    public List<SoundSource_SE> GetSoundSource_SE_List
    {
        get { return _soundSource_SE_List; }
    }
}このコードは、サウンドのデータを管理するためのScriptableObjectになります。
役割としては、検索用のtagと効果音のデータを持った構造体をListで管理しています。
↑↑ScriptableObjectの詳しい説明はこちらの記事をチェック!↑↑
SoundManagerとSoundDataを実装したら、Unityの方でも設定を行っていきます!
Unity側の設定

①Projectタブを選択→右クリック→メニューからScriptableObjectを選択→SoundDataを選択
②作成されたSoundDataアセットを選択→SoundSource_SE_Listの要素数を2に設定
③画像のようにtest1とtest2のサウンドデータを設定する

最後に、画像のように編集したSoundDataを、SoundManagerにアタッチします。
これでサウンドを鳴らす実装は終了です!
あとは、ゲームを再生し右クリック、左クリックでそれぞれ違う音が鳴れば問題ありません!
 _soundManager.PlaySE("test1");他のクラスから、効果音を鳴らしたい場合は、このコードのようにして鳴らすことが出来ます!
お疲れさまでした!

 
  
  
  
   
					 
					
 
					
