본문 바로가기
Unity

[Unity3D] Warning : OnLevelWasLoaded deprecated

by Aducssini 2019. 11. 21.

프로젝트를 날려 먹고 유니티를 다시 까는 상황이 벌어졌다. 

그리고 나니

 

Warning 들이 미친듯이;;;   

으아아아;;  

 

이왕 다시 시작하는 마음으로 

Warning 을 잡아보려고 한다. 

 

(class명이 'Fade'이다.)

보자 짧은 영어로 해석을 해보자면... 

으음... 

아. 다음 유니티에서 뭔가 없어진댄다.  

근데 저건 함수 이름이니까 함수가 없어진다는 소리인듯. 

 

한마디로 

OnLevelWasLoaded  함수 대신에 다른걸 넣어야된다는 소리 

이리저리 찾아보니 일반적으로 이렇게 잡아본다고들 한다. 

 

1
2
3
4
 void OnLevelWasLoaded(int value)
 {
        SetCanvas();
 }
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

이 부분을... 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
void OnSceneLoaded(Scene scene, LoadSceneMode level)
{       
    SetCanvas();
}
 
private void OnEnable()
{
    SceneManager.sceneLoaded += OnSceneLoaded;
}
 
private void OnDisable()
{
    SceneManager.sceneLoaded -= OnSceneLoaded;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

이렇게 바꾸면 된다고 하기에 그대로 해보았다. 

워닝은 없어진다. 

 

일단은 OK...

아무래도 기존 OnLevelWasLoaded(int value) 함수를

 

유니티 내부 함수인 

SceneManager.sceneLoaded 에 포함해서 실행하는 듯한데. 

SceneManager.sceneLoaded 델리게이트 함수가 형식이 

 

void Function(Scene scene, LoadSeneMode level) 이라서 

형식에 맞춘다음 추가해서 사용하는 방식인듯. 

 

문법으로 보지만. 이렇게 해야하나.. 생각이 드는 방법이기는 하다.