본문 바로가기

유니티

[ 유니티 ]SkyBox가 인게임에서 안바뀌는 문제 해결

[문제]

[문제 상황]

    RenderSettings.skybox =skyBox;
    DynamicGI.UpdateEnvironment();

위의 메서드를 통해서 스카이 박스를 바꾸려 하는데 바뀌지 않았다 .

[해결]

[원인]

이유는 해당 메서드를 Init에서 실행해주었는데 (Awake와 비슷한 타이밍에 호출 되었을듯)

씬의 이동 방식이 그전씬 => 로딩 => 모든 과정이 완료(Init에서 완료를 처리함) =>씬이 활성화

의 순서였다. 그렇기에 씬이 완전히 로드 되기 전 , 즉 Loading씬의 SkyBox를 바꾸고 있던 것이다 .

이는 다음의 메서드로 해결하였다

    IEnumerator SetSkyBox(Material skyBox)
    {
        yield return new WaitUntil(()=>SceneManager.GetActiveScene().name== AllEnums.SceneType.Game_Rhythm.ToString());
        RenderSettings.skybox =skyBox;
        DynamicGI.UpdateEnvironment();
    }

=>현재씬이 활성화 되기까지 대기한다음 바꾸어주게 하였다