게임 내의 튜토리얼을 제작도중 기존에는 String List에 대사를 담아두고 불러오는 방법을 사용했다. 하지만 이렇게 하다보니 유지/보수도 어렵고, 오류로 인해 하이어라키에 정보가 날라갔을 때 대처가 어렵다는 단점이 존재했다.
그래서 대사를 조금 더 유용하게 관리하기 위해 .txt 파일을 생성하여 관리하기로 했다. File이 잘 불러와지고 대본 내용도 잘 불러와지는데 갑자기 스크립트의 내용이 겹쳐서 보였다.
우선 내 코드에서는 정신이 드는가
를 우선 보여주고 지금 가려져서 안 보이지만 상황에 따라 스킵이 가능하다는 걸 안내하기 위한 ...[SPACE]
를 보여준다. TextMeshPro에 들어온 값을 보면 크게 이상이 없어 보였는데 원인을 찾기 어려웠다.
그러다가 유튜브에서 나와 정확하게 똑같은 문제를 해결하는 팁을 공유한 영상을 발견하고 문제를 해결했다.
원인은 txt 파일에서 긁어올 때 \r
도 함께 가져와져서 이 부분으로 인해 라인 구분이 되지 않고, 텍스트가 겹쳐졌던 것이다.
\r
이 뭔데?
우선 메모장에는 CRLF라 하여 줄이 바뀌고, 가장 앞 줄로 이동하는 코드가 들어가 있다. CR : Carriage Return (\r) LF : Line Feed (\n)
여기서 CR이 가장 앞 줄로 이동 하는 부분인데, 메모장에서 내용을 가져올 때 해당 명령어가 함께 가져와져서 가장 앞 줄로 당겨져서 서로 겹쳐 보였던 것이다.
참고로 LF는 다들 알다시피 줄 바꿈이다.
그리하여 가져올 때 \r
요 녀석을 비워주게 되면 아래와 같이 정상적으로 원하는 대로 출력이된다.
CRLF에 대한 개념을 전혀 몰랐고, 생각하지도 못했는데 이번 기회를 통해 해당 이슈가 발생할 수 있다는 걸 알았고 다음에 또 텍스트 겹침 이슈가 일어난다면 재빠르게 알아챌 수 있을 것이다.