슬라이더를 가져온 것까진 좋았다.
StartScene에서는 정상작동되던 애가 MainScene을 갔다 오면 Slider 컴포넌트를 잃어버린다.
싱글톤인 SoundManager의 컴포넌트가 자꾸 사라져서
어떻게 해야 할지 한참 고민했는데 의외로 아주 간단하게 해결되었다.
public class BgmSliderController : MonoBehaviour
{
public Slider bgmSlider;
private void Start()
{
// SoundManager에 있는 bgmSlider에 전달
SoundManager.Instance.bgmSlider = this.bgmSlider;
}
}
BgmSliderController 스크립트를 Slider에 붙여주고 위와 같이 작성해 주었다.
이렇게 하면 씬을 이동한 뒤 다시 돌아와도
SoundManager의 Slider 컴포넌트가 잘 붙어있는다.
여기서 또 한 가지 문제를 발견했다.
씬을 옮기기 전 옵션창에서 조절한 값은 유지가 잘 되는데,
씬 이동 후 다시 옵션창을 열면 '0.024...' 값이 고정돼 소리가 확 줄어든다.
이미 첫 번째 문제에서 시간을 많이 잡아먹어서 팀원분께 말씀드렸더니...
이것 또한 아주 쉽게 해결되었다.
public class BgmSliderController : MonoBehaviour
{
public Slider bgmSlider;
private void Start()
{
float _bgmVol = PlayerPrefs.GetFloat("bgmVol", 1f); // 값이 비어있을 때 1f로 설정
bgmSlider.value = _bgmVol;
// SoundManager에 있는 bgmSlider에 전달
SoundManager.Instance.bgmSlider = this.bgmSlider;
}
}
아니! 분명 내가 했을 땐 안 됐는데 😧
비슷하게 적었어도 아예 다른 코드였던 거야...
하루 종일 잡고 있던 문제들이 해결되어서 좋긴 하지만... 아직 갈 길이 멀다.