Unity/정보

[Unity] 사운드 매니저

달시_Dalsi 2023. 12. 3. 15:13

사운드 매니저

게임의 중요한 부분 중 하나는 바로 사운드다.

프로젝트마다 많은 효과음 및 배경음이 사용된다. 이를 효과적으로 관리하기 위해 아래의 사운드 매니저 스크립트를 기반으로 조금씩 변형하여 사용하고 있다.

단, 지금 소개하는 기능은 한 오브젝트에 모든 오디오 소스가 있기에 일부 3D 작업물에는 적합하지 않을수도 있다.

주요 스크립트

using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;

[System.Serializable]
public class Sound
{
    public string soundName;
    public AudioClip clip;
}

public class SoundManager : MonoBehaviour
{
    public static SoundManager instance;

    public Sound[] sfxSound;
    public AudioSource[] sfxPlayer;

    public float volume = 0.5f;
    public int Count_channel = 30; // 채널 갯수

    void Awake()
    {
        instance = this;
        Init();
    }

    void Init()
    {
        sfxPlayer = new AudioSource[Count_channel];
        for (int i = 0; i < Count_channel; i++) 
        {
            sfxPlayer[i] = transform.AddComponent<AudioSource>();
            sfxPlayer[i].playOnAwake = false;
            sfxPlayer[i].volume = volume;
        }
    }

    public void PlaySE(string _soundName)
    {
        for (int i = 0; i < sfxSound.Length; i++)
        {
            if (_soundName == sfxSound[i].soundName)
            {
                for (int j = 0; j < sfxPlayer.Length; j++)
                {
                    if (!sfxPlayer[j].isPlaying)
                    {
                        sfxPlayer[j].clip = sfxSound[i].clip;
                        sfxPlayer[j].Play();
                        return;
                    }
                }
                return;
            }
        }
    }
}

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{
    void Start()
    {
        SoundManager.instance.PlaySE("soundName");
    }
}

 

 

사용 방법

 

위 사진처럼 사운드파일을 넣고 사용자가 정한 이름을 적어준다. 그리고 아래 코드를 사용하여 이름을 비교 후 알맞는 사운드 클립을 소스에 넣어 재생시킨다.

SoundManager.instance.PlaySE("soundName");

 

결과

.

 

'Unity > 정보' 카테고리의 다른 글

[Unity] 오브젝트 풀링 (Object pooling)  (0) 2024.01.06
[Unity] 모바일 게임 성능 최적화  (0) 2024.01.02
[Unity] AOS Fog of War 에셋  (0) 2023.12.02
[Unity] DOTween 사용하기  (0) 2023.11.27
[Unity] 구글 스프레드시트 연동  (0) 2023.11.14