Today I Learn/내일배움캠프
Unity 게임 개발 심화 (9주차 5일)
오늘도즐겨
2024. 11. 25. 23:48
🔥 11/21목요일 목표 🔥
🔎 팀 프로젝트 사운드 매니저 정리완료하기
🔎 팀 프로젝트 사운드 설정하기
🔎 팀 프로젝트 슬라이더에 사운드연결하기
Resources 파일에서 로드 하고 싶어 아래의 주석처리 된것을 불러 왔지만,
로드 되는것은 GameObject이라 로드가 되지 않았음.
void Start()
{
GameManager.instance.SoundManager = this;
audioSource = GetComponent<AudioSource>();
GameAudioSource = GameManager.instance.GetComponent<AudioSource>();
if (GameAudioSource == null)
{
GameAudioSource = GameManager.instance.gameObject.AddComponent<AudioSource>();
}
audioSource.volume = musicVolume; //볼륨 초기화
//GameObject backGroundMusicSliderPrefabs = Resources.Load<GameObject>("UI/BGM");
//backGroundMusicSlider = backGroundMusicSliderPrefabs.GetComponent<Slider>();
//backGroundMusicSlider.onValueChanged.AddListener(ChangeVolume);
GameAudioSource.volume = effectVolume;
//GameObject effectVolumeSliderPrefabs = Resources.Load<GameObject>("UI/SFX");
//effectVolumeSlider = effectVolumeSliderPrefabs.GetComponent<Slider>();
//effectVolumeSlider.onValueChanged.AddListener(ChangeEffectVolume);
PlayMusic(mainMusicClip);
}
모든 UI를 프리팹화 하여 동적생성해주면서,
프리팹 내부에 달아 줘야하는 스크립트를 따로 만들게 됨
UIManager에서 Slider의 Value값을 OnValueChanged
public class UISoundController : UIBase
{
[SerializeField]private Slider backGroundMusicSlider;
[SerializeField]private Slider effectVolumeSlider;
private SoundManager sound;
private void Start()
{
sound = GameManager.instance.SoundManager;
//슬라이더의
backGroundMusicSlider.value = sound.audioSource.volume;
effectVolumeSlider.value = sound.GameAudioSource.volume;
backGroundMusicSlider.onValueChanged.AddListener(ChangeVolume);
effectVolumeSlider.onValueChanged.AddListener(ChangeEffectVolume);
}
public void ChangeVolume(float volume)
{
sound.ChangeVolume(volume);
}
public void ChangeEffectVolume(float volume)
{
sound.ChangeEffectVolume(volume);
}
}
🔥 11/22금요일 목표 🔥
🔎 팀 프로젝트 발표 하기