2021년 4월 30일 금요일

유니티 게임 개발 OnLevelWasLoaded deprecated 경고 해결 방법

 OnLevelWasLoaded 를 가지고 사용하는 코드가 있는데요.

어느날 갑자기 deprecated 경고가 뜨는군요..


deprecated 경고는 해당 함수등이 사라지기 전에 코드 사용자에게 경고를 주기 위해서 미리 알려주는 경고입니다. 언제가 될지는 모르겠지만 사라질 운명이 된거죠..



위 캡쳐 파일이 console에서 친절하게 없어질 기능이니 지워버려~ 라고 알려주는 화면입니다.

저는 이 기능을 지울 수 없기 때문에 수정을 하기로 했습니다..


먼저 수정 방법을 설명하기 전에 OnLevelWasLoaded가 하는 역할을 알려드리죠..


OnLevelWasLoaded 이벤트 함수는 씬이 변경되면 호출되는 함수입니다. 최초에는 호출이 안되고요.. 다른 씬으로 전환 시 호출된답니다. 보통 이 함수를 사용하는 곳은 싱글턴으로 사용하는 객체를 쓸 경우죠.

GameObejct 를 static 으로 로드하고 죽지 않도록 해서 어느 씬에서나 사용할 경우 해당 기능이 필요할 때가 있을 수 있겠죠??


위와 같이 OnLevelWasLoaded 이벤트 함수를 사용하시는 분은 밑의 코드로 대체해서 사용하시면 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
    void OnEnable()
    {
        SceneManager.sceneLoaded += OnLevelFinishedLoading;
    }

    void OnDisable()
    {
        SceneManager.sceneLoaded -= OnLevelFinishedLoading;
    }

    void OnLevelFinishedLoading(Scene scene, LoadSceneMode mode)
    {
        // 코드작성
    }
cs


sceneLoaded 이벤트 함수를 직접 정의하는거죠..


※ 새로운 방법

- 제공 : 지나가는행인(댓글)님의 도움으로 링크 첨부드립니다.


https://answers.unity.com/questions/1174255/since-onlevelwasloaded-is-deprecated-in-540b15-wha.html


참고하세요~


댓글 없음:

댓글 쓰기