저는 Addressable Asset System을 이용하면서 발생한 현상인데, 다양한 상황에서 발생하는 것 같습니다! (git clone 등 협업 상황, export/import package 등등..)
거의 모든 상황에서 이 방식으로 해결할 수 있습니다😊
여전히 Addressale Asset System으로 작업중인데, 로드한 Asset(Prefab, Scene)에서 layer 순서가 이상하게 보이는 것을 확인했다!
디자이너가 작업을 sorting layer로 한 것을 알고 있었기 때문에 sorting layer를 확인했더니..
원래는 있었던 버튼이 없다..?
심지어 버튼 위치를 누르면 버튼이 작동하기는 함! 즉, 보이지만 않을 뿐!
처음에는 버튼만 순서가 깨지는 줄 알고, 스크립트로 canvas 오브젝트에 sorting layer를 지정해주려고 했다.
gameObject.GetComponent<Canvas>().sortingLayerName = "Button";
(* Button이 가장 상위 Layer)
원본처럼 잘 나오는 걸 확인하고 다른 Scene들을 확인했더니만 씬 자체가 다 깨지고 있었다!!
그래서 문제가 있음을 확인하고 살펴본 결과..
어라? 모든 오브젝트에서 unknown layer라고 뜨며 순서가 이상해진 것이었다!!
unknown layer라고 뜬다는 것은, 현재 프로젝트에서 해당 layer가 없다는 말이다.
그래서 sorting layer를 추가해봤다.
Project Settings - Tags and Layers에서 추가할 수 있다!
그러나 이것 만드로는 해결이 안 된다..
Layer는 name 뿐만 아니라 id 값도 가지고 있기 때문!!
이런 식으로.. 왼쪽은 현재 프로젝트의 sorting layer, 오른쪽은 Addressable Asset을 만들었던 프로젝트의 sorting layer들이다. 같은 이름의 sorting layer를 임의로 추가해도 uniqueID가 다르기 때문에 계속 unknown layer로 뜨는 것이다!
즉, id 값을 맞춰줘야한다. 가장 간단한 방법은... Project Settings에서 sorting layer 추가도 하지 않고, 그냥 스크립트를 복붙하는 것이다.
이 값은 유니티 패키지에서는 확인할 수 없고, 프로젝트 폴더에서 직접 확인하고 변경해야 한다.
(그래서 협업을 할 때 ProjectSettings 폴더도 공유해야 한다!)
/유니티 패키지/ProjectSettings/TagManager.asset
파일에서 확인 & 변경할 수 있다.
복붙 완료.
이렇게 하면 sorting layer가 unknown layer가 아닌, 원래 설정했던대로 나오는 것을 확인할 수 있다😆