-
Notifications
You must be signed in to change notification settings - Fork 0
Develop document : Sound System
TinyMetro 프로젝트의 소리 (배경, 효과음)은 SoundManager 클래스에 의해 관리됩니다. 해당 문서는 SoundManager 및 그와 관련된 값에 대한 설명입니다.
프로젝트에서 사용 할 효과음의 용어에 대한 정리입니다.
문서 및 한글 용어 | -> | 프로젝트 변수명 |
---|---|---|
배경 음악 | BGM | |
역 생성 알림 | StationSpawn | |
기차 배치 | SpawnTrain | |
객차 배치 | SpawnSubtrain | |
기차 업그레이드 | TrainUpgrade | |
역 업그레이드 | StationUpgrade | |
이벤트 발생 | OccurEvent | |
메뉴 버튼 / 상점 등 버튼 클릭 | ButtonClick | |
상점 <-> 은행 <-> 정책 등 탭간 이동 | TabMove | |
정지 | Pause | |
재생 | Unpause |
해당 변수명은 TinyMetroEffectSound enum class에 정의되어 있습니다.
각각의 효과음은 다음 위치에 정의되어 있습니다.
효과음 종류 | -> | 호출 위치 |
---|---|---|
역 생성 알림 | StationManager::SpawnStation | |
기차 배치 | Train::ServiceStart | |
객차 배치 | Subtrain::ServiceStart | |
기차 업그레이드 | TrainTemplate::Upgrade | |
역 업그레이드 | Station::Upgrade | |
이벤트 발생 | TinyMetroEventManager::OccurEvent | |
메뉴 버튼 / 상점 등 버튼 클릭 | [] | |
상점 <-> 은행 <-> 정책 등 탭간 이동 | [] | |
정지 | [] | |
재생 | [] |
SoundManager를 사용하기 위해 레벨에 배치할 시, 다음 사항이 고려되어야 합니다.
타이틀 등의 Game Level이 아닐 경우, 레벨에 직접 SoundManager및 SaveManager가 배치되어야 합니다.
Game Level일 경우, GameMode에서 SoundManager를 자동으로 스폰합니다.
이 경우, 레벨에 SoundManager를 배치할 필요가 없습니다.
SoundManager는 다음과 같은 두 가지 방법으로 가져올 수 있습니다.
타이틀 등의 Game Level이 아닐 경우, UGameplayStatics::GetActorOfClass함수를 이용합니다.
Game Level일 경우, SoundManager는 GameMode에 의해 스폰됩니다.
따라서, GameMode의 GetSoundManager함수를 이용합니다.
SoundManager는 다음과 같은 기능을 수행합니다.
현재 레벨이 타이틀 레벨일 경우, 자동으로 타이틀 BGM을 재생합니다.
현재 레벨이 게임 레벨일 경우, 자동으로 게임 BGM을 재생합니다.
BGM은 랜덤으로 선택되어 반복적으로 재생됩니다.
게임 효과음은 특정 상황에 맞게 다음 함수를 호출하여 재생할 수 있습니다.
void SoundManager::PlaySound(TinyMetroEffectSound)
입력 enum에 해당하는 사운드를 재생합니다.
배경음 및 효과음의 크기는 다음과 같이 조절할 수 있습니다.
void SoundManager::SetMasterVolume(float)
void SoundManager::SetBackgroundVolume(float)
void SoundManager::SetEffectVolume(float)
또한, 다음 함수를 통해 현재 배경음 및 효과음의 값을 받아올 수 있습니다.
float SoundManager::GetMasterVolume()
float SoundManager::GetBackgroundVolume()
float SoundManager::GetEffectVolume()
Master volume의 경우, Background 및 Effect모두에 영향을 미치는 값입니다.
최종적인 Background 및 Effect값은 각각의 값에 Master volume의 값이 곱해져서 적용됩니다.