Unity 6 Kimchi Run - 7
오늘은 영상에 없는 내용을
따로 추가할 예정입니다
바로 Audio 작업이에요
https://dova-s.jp/
フリーBGM(音楽素材)無料ダウンロード|DOVA-SYNDROME
フリーBGM音楽素材を無料ダウンロード配布しています。商用や非商用など、用途を問わず連絡不要でご自由にご利用頂けます。[配信BGM素材数 17283曲/SE素材数 1318音 2025/1/5現在]
dova-s.jp
일단 Audio Setting을 위해
AudioManager와 Audio Source를 2개 넣어주겠습니다
하나는 BGM, 하나는 SFX 용입니다
왼쪽이 BGM, 오른쪽이 SFX 입니다
BGM Audio Source에 BGM을 넣어주고
Loop를 활성화 해주겠습니다
SFX Audio Source는 다 비활성화 해주세요
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public struct AudioStorage // AudioType과 그에 해당하는 AudioClip을 묶어서 저장
{
public AudioType type;
public AudioClip clip;
}
public enum AudioType // Audio의 이름(종류)을 나열한 데이터 타입
{
Jump,
Eat,
Hit,
Die
}
public class AudioManager : MonoBehaviour
{
public static AudioManager Instance => instance;
private static AudioManager instance;
[SerializeField] private AudioSource audioSource; // SFX AudioSource
[SerializeField] private List<AudioStorage> audioStorage;
private Dictionary<AudioType, AudioClip> audioDictionary; // AudioStorage 리스트의 데이터를 AudioDictionary로 변환해 빠르게 검색 가능하게 만듦
void Awake()
{
if (instance == null)
{
instance = this;
DontDestroyOnLoad(gameObject);
}
audioDictionary = new Dictionary<AudioType, AudioClip>();
foreach (AudioStorage audio in audioStorage)
{
if (!audioDictionary.ContainsKey(audio.type))
{
audioDictionary[audio.type] = audio.clip;
}
}
}
public void PlaySFX(AudioType type) // 매개변수로 전달받은 AudioType에 해당하는 AudioClip을 찾아 재생
{
if (audioDictionary.TryGetValue(type, out AudioClip clip))
{
audioSource.PlayOneShot(clip);
}
}
}
AudioManager은 이렇게 작성했습니다
주석에 설명을 써두긴 했는데
표로 한번 더 정리하겠습니다
| 항목 |
Enum |
Awake |
PlaySFX |
| 역할 |
사운드 종류를 정의 |
초기화 작업 및 싱글톤 설정 |
특정 사운드를 재생 |
| 설명 |
Jump, Eat, Hit, Die 등 사운드의 종류를 열거 - 사운드 식별 키로 사용 |
AudioManager 인스턴스를 생성 - AudioStorage 리스트를 Dictionary로 변환 |
매개변수로 전달받은 사운드 타입의 효과음을 재생 |
AudioSource, AudioStorage를 입력해주고
각 상황에 맞게 PlaySFX 해주겠습니다
Jump할 때 Jump 넣어주세요
오늘은 Audio 작업이라 움짤 대신
영상 첨부하겠습니다!
상황에 맞게 지정한 효과음들이 잘 나오고 있네요