사운드 매니저
게임의 중요한 부분 중 하나는 바로 사운드다.
프로젝트마다 많은 효과음 및 배경음이 사용된다. 이를 효과적으로 관리하기 위해 아래의 사운드 매니저 스크립트를 기반으로 조금씩 변형하여 사용하고 있다.
단, 지금 소개하는 기능은 한 오브젝트에 모든 오디오 소스가 있기에 일부 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 |