0. 목적
유니티에서 SceneManager
메서드를 통해 Scene
전환 기능 구현 시 발생하는 <SceneManager
에는 LoadScene
에 대한 정의가 포함되어 있지 않습니다. (에러코드 : CS0117)> 오류 해결방법에 대해 알아보자. using UnityEngine.SceneManagement;
참조를 했음에도 발생하는 오류이다.
1. 원인
나도 사실 꽤 당황했었는데... using
참조문도 잘 작성했고 너무나 간단한 코드라 오류가 왜 발생하는지 도무지 이해가 가지 않았었다. 원인을 알게 되고서는 너무 단순한 문제라 어이가 없었을 수준이었다.
이 에러는 C# Script
의 이름을 SceneManager
로 생성했을 경우 일어나는 에러이다.
C# Script
를 생성하면, 파일명과 class
명이 동일하게 생성되는 것은 알고 있을 것이다. Scene
전환 기능을 위해서는 SceneManager.LoadScene("");
등의 SceneManager
메서드를 이용하는데, class
명칭과 메서드 명칭이 SceneManager
로 겹쳐버리니 모호성이 떨어지는 관계로 C# 코드에서 인식을 할 수 없기 때문이다.
2. 해결방법
해결방법은 아주 간단하다. C# Script
파일명과 class
명칭을 다른 것으로 바꿔주면 된다. C# Script
파일명과 class
명칭을 단순히 SceneManager
에서 SceneChanger
로 변경했는데 해결된 모습을 확인할 수 있다.
이를 통해, 유니티에서 SceneManager
메서드를 사용할 때 C# Script
명칭을 SceneManager
로 생성하면 위와 같이 에러가 발생한다는 사실을 알게 되었다. 메서드 명칭과 C# class
명칭이 겹치는 일이 발생하지 않도록 주의하자.