2021년 4월 30일 금요일

Default GameObject Tag : Player already registered 에러 해결 방법

 어느날 열심히 유니티로 개발을 하던 중 Console 창에 'Default GameObject Tag : Player already registered'

이 메시지를 발견했습니다. 단순히 warning 이긴한데요. 그러나 불안한 느낌이죠.

일단 에러 메시지의 뜻을 보겠습니다.

Default 로 정의되어 있는 Tag : 'Player' => 이 태그가 이미 등록되어 있습니다. 라는 말입니다.

Player 태그는 Default 로 정해져있고요. 해당 태그는 변경이 불가능합니다.


동일한 태그가 여러군데에 등록이 되면 유니티는 해당 태그에 한해서 작동이 완벽하게 수행되지 않을 수 있습니다.


이 경고는 저에게 실제로 발생하였습니다. 제 본업이 유니티 게임 개발자가 아닌 관계로 몇일에 걸려서 간신히 해결했네요. 몇일이라고는 하지만 유니티를 할 시간이 너무 없었던게 문제였죠. 그리고 해결 방법은 의외로 간단했습니다.



제가 실수로 'Player' 태그를 등록했던걸까요?? 등록한 기억은 없는데 어느덧 등록이 되어 있더군요.

처음 유니티를 실행하였을 때에는 위와 같은 메시지에서 2줄만 나온답니다.. 왜??? 두줄이나 나오지??

Tags & Layers 창을 열어봐야겠죠??

Tags & Layers 창은 상단 메뉴에서 Edit - Project Settings - Tags & Layers 를 선택하시거나, 유니티 에디터의 화면 우측 상단 Layers 콤보 버튼을 누르신 후 'Edit Layers...' 항목을 선택 후 Inspector 창을 확인하시면 됩니다.



저의 경우는 위와 같이 나왔습니다. Tag 0 과 Tag 9 가 똑같이 Player 항목이 설정되어 있습니다.

제가 캡처해놓지는 않았지만 Sorting Layers 와 Layers 의 경우 명칭 변경이 된답니다.


1차 해결 방법


일반적으로 위의 화면에서 지우고자 하는 항목을 선택 후 빨간 박스의 '-' 버튼을 누르시면 해당 항목이 삭제가 되면서 저와 같은 문제는 간단히 해결됩니다. 그러나 빨간 박스를 눌렀음에도 불구하고 첫번째 이미지와 같이 'UnityException : Tag : Player is not defined. UnityEngine.GameObject.FindWithTag (System.String tag) (at C:/buildslave/unity/build/artifacts/generated/common/runtime/GameObjectBindings.gen.cs:273)' 이라는 허무맹랑한 에러가 발생하실 경우에는 밑의 내용을 따라와 주세요.

유니티 에디터가 뱉은 경로는 제 폴더에 존재하지도 않은 경로의 파일입니다. 아마도 저 경로는 유니티 에디터 개발팀에서 지정되어 있던 빌드 경로로 추정됩니다. 간단히 무시하세요.


먼저 유니티 에디터에서 실제 파일을 변경하는걸 실패했으니 그냥 종료시켜버리세요. 굳이 종료는 안하셔도 됩니다만, 저는 태그 관리 파일을 직접 수정하여 해당 태그를 정상적으로 다시 로딩 시키기를 원하기 때문에 종료 시켰습니다. 뭐 이것은 추정이지만요. 유니티 에디터가 실행하는 시점에 태그 정보와 다른 정보들을 읽지 않을까 싶더군요.


 탐색기에서 경로를 이동하자.


저의 유니티 프로젝트 폴더는 d:\Source-Unity\ 입니다. 여기서 제 프로젝트 명이 붙는것이죠.

해당 프로젝트 경로의 하위 폴더는 Assets, Library, ProjectSettings, Temp 폴더가 있습니다. 여기서 살펴볼 폴더는 ProjectSettings 폴더 입니다. 아까 Tags & Layers 창을 띄울 때 있었던 메뉴의 항목명과 동일하죠.. 유니티 에디터에서는 해당 경로는 직접 수정이 불가능 했습니다.



해당 경로를 가보니 친절하게 이름이 딱 눈에 들어오게 작명해주셨습니다. 유니티 팀의 작명센스 최고~!


  


TagManager.assest 파일을 에디터 프로그램으로 실행합니다. 여기서 메모장으로 열게 되면 글자가 깨져 보이게 됩니다. 인코딩 문제로 추정되는데요. 그냥 귀찮아서 안 알아봤습니다. 저의 경우 노트패드++ 프로그램으로 실행하니 간단히 열리더군요. 왼쪽과 같이 있던 항목을 지웠습니다. 저의 경우 테스트용 Tag 를 추가로 입력했습니다. 333 태그와 Player 태그 2개를 지웠죠. 지운 완성된 화면은 오른쪽 화면입니다.


감사해요 Notepad++


Notepad++ 다운받으러 가기


다시 유니티 에디터를 실행해보니 Console 창에 아무런 경고가 나오지 않습니다.



Tags & Layers 창을 열어서 등록된 태그를 확인하니 제가 의도된 대로 정상적으로 나와있습니다.


 해결 완료 - 두 줄 간단 요약 


쉽게 해결이 됐습니다.


  1. Tags & Layers 창에서 잘못된 Tag 를 지운다. - 해결이 안되면 2번
  2. ProjectSettings 창에서 TagManager.asset 파일을 직접 수정한다.

이렇게 간단히 해결이 되었습니다.

제법 글을 길지만 이미지와 잡설로 인해 실제로 한거에 비해서 많아보일뿐입니다. 저와 같은 문제가 발생하신 분들은 참고해주세요.

그나저나 유니티 일반 개발자들에게는 쉽게 접근할 수 있는 편리함은 있지만 역시 버그는 많네요.

댓글 없음:

댓글 쓰기