SKYLIGHT STUDIO

[Unity] Duplicate identifier 오류 해결 본문

Game Development/Unity C#

[Unity] Duplicate identifier 오류 해결

SKY_L 2023. 12. 1. 10:29

우리가 알았고 알고 알게 될 모든 지식은 우리가 절대 알지 못할 것에 비하면 아무것도 아니다. - 콘스탄틴 치올코프스키

 

" Duplicate identifier 825126022. File: "Assets/Scenes/DungeonScene.unity". "

 

브랜치들을 Merge하니 특이한 오류가 발생했다.

이전까지도 멀쩡하게 작업하던 씬 중 하나가 아예 접근불가 판정을 받고 제대로 열리지가 않던 것.

 

늘 그렇듯이 이리저리 낑낑대다가 로그에 뜬 다른 오류도 확인한다.

 

" Error loading the file 'Assets/Scenes/DungeonSceneunity'. File has multiple objects with same identifiers.
Probably caused by a merge.
"

 

에디터 왈, 오브젝트 몇몇이 중복된 식별자를 가지고 있어서 Scene 파일을 로딩하는데 문제가 생겼다는 것.

원래대로라면 에디터에서 수정하는 것이 맞지만, 이번 경우에선 씬 파일 자체가 무력화되었기에 조금 다른 방법을 사용해야 했다.

 

 

DungeonScene.unity 파일을 VSC로 열어서 내용을 체크해본다.

YAML 문법으로 이루어져있는 만큼 가독성에는 크게 문제는 없다.

 

여기서 Ctrl + F를 통해 825126022 식별자를 가진 오브젝트들을 찾는다.

 

--- !u!1 &825126022

 

여기서 해당 단락을 찾는다. 

yaml 문법에 대해 대강 설명을 하자면...

 


 

하이픈 3개( --- )는 각 문서의 시작을 나타낸다. 여러 개의 YAML 문서가 하나의 파일에 있을 때, 각 문서의 시작을 표시하는 데 사용된다고 보면 된다.

 

!u!1는 유니티의 개체를 나타내는 태그.

 

&825126022는 해당 개체의 고유한 식별자다. 이것이 중복되어 문제가 발생했던 것.

 


우리 프로젝트의 경우에는 EnemyUI_Camera와 OptionName 두 오브젝트간의 식별자 충돌이었다.

이 중 상대적으로 다른 스크립트와의 연관성이 적은 EnemyUI_Camera의 식별자를 임의로 &825126027로 수정하니 정상적으로 Scene이 구동되는 것을 확인했다. 당연하게도 겹치는 식별자를 사용해선 안된다!

 

머지할때마다 문제가 터지니 골치 아프네

 

 

 

 

 

'Game Development > Unity C#' 카테고리의 다른 글

[Unity] Tilemap  (0) 2024.08.18
[Unity] Shader  (0) 2024.07.22
[Unity C#] 오브젝트에 부여된 NavMeshAgent가 제대로 작동하지 않는 문제  (1) 2024.04.27
[Unreal C++] UFUNCTION  (0) 2024.01.17