• 오늘도 유니티 미니 프로젝트를 진행했습니다.
오늘은 팀원들과 각자 개발해본 기능들을 깃허브로 합쳐보는 작업을 해보았는데
서로 다양한 것들이 다르거나 아니면 Scene의 오브젝트를 변경해서 안된다거나..
이런 각종 문제로 몇번을 깃허브의 파일을 지우고 다시 올린지 모르겠습니다.ㅠㅠ
그 중 제일 머리아팠던 것에 대해 올려보려고 합니다.
문제점
• 유니티는 코드뿐 아니라 오브젝트의 변경점도 같이 합쳐야 됬었기 때문에 깃에 merge를 할 때
유니티Scene에서 설정들이 달라 충돌이 일어났습니다.
해보았던 방법
유니티는 Unity Secen은 text editor로 열어보면 이해하기 힘든 id들과 값들로 이루어져있어서
사실상 수동 머지가 불가능하다고 합니다. 그래서 다행히 Unity는 UnityYAMLMerge를 이용해서
scene과 prefab 파일을 머지할 수 있게 제공하고 있습니다.
unity-manual
출처 : https://crystal-k.tistory.com/151
1. 본인 pc의 "UnityYAMLMerge.exe " 위치를 확인해서 유니티 프로젝트의 .git>config 파일에 아래와 같이 추가해주면 된다.
[merge]
tool = unityyamlmerge
[mergetool "unityyamlmerge"]
trustExitCode = false
cmd = 'C:\Program Files\Unity\Hub\Editor\2021.1.14f1\Editor\Data\Tools\UnityYAMLMerge.exe' merge -p "BASE""REMOTE" "LOCAL""MERGED"
- 유니티 에디터에서도 설정을 확인해줘야 하는데 확인해보니깐 디폴트 값이었는지, 난 수정할 필요는 없었다.
유니티 에디터의 Settings> Editor에서 아래 두 개 값의 설정을 확인하면 된다.
- Version Control mode : Visible Meta Files
- Asset Serialization mode : Force Text
그리고 실전이다.
git을 이용해서 merge 하다가 comflict 발생하는 상태에서 git bash를 열어서 아래의 명령어를 입력한다.
git mergetool
이 방법으로 했을 때 씬 충돌이 사라지고 머지가 되긴 했습니다. 하지만 그 뒤에 파일을 열었을때 오류가 뜨며 안전모드로 유니티가 실행되었습니다.
결국은 그 뒤로 파일이 못쓰게 되고 branch가 중구난방이 되어서 다시 Repository를 만들어 파일을 올릴 수 밖에 없었습니다.
결국 원하는 결과에는 도달했지만 해결하지 못한 찝찝한 오류를 두고 다른 작업을 할 수밖에 없었습니다.😓
다음에 다시한번 씬 충돌이 난다면 그때는 꼭 해결해 보도록 잘 알아보겠습니다.🐈
정보 감사합니다.