오늘은 개인과제 제출날이었다.
필수 구현 사항은 어제 이미 다 만들어놨었기에 오늘은 선택사항을 구현해보기로 했다.
오늘의 한 일
1. 시간 표시
현재시간을 화면 좌상단 위치에 나타나게 해보자.
우선 시간을 나타내주는 항목은 캐릭터가 움직여도 자리가 고정되어야 한다.
개인과제 해설영상에서 튜터님이 카메라가 플레이어를 따라서 움직이게 하는 방법으로 Main Camera를 플레이어의 하위 오브젝트로 들어가게끔 하셨던것에 착안해서
현재시간을 나타내줄 텍스트 오브젝트를 메인카메라의 하위 오브젝트로 넣어줬다.
현재시간을 나타내주는 코드는 DateTime.Now.ToString(""); 으로, 위 코드를 작성후 메인 카메라 하위 오브젝트로 넣어준 텍스트 오브젝트를 손에 쥐어주기만 하면 된다. 참 간단하다.
캐릭터가 움직여도 시간을 나타내주는 텍스트의 위치는 고정되고, 현재 글을 쓰고 있는 시간인 20시 23분을 확실하게 나타내는 모습이다.
2. 인게임에서 이름 바꾸기
처음 시작할때 캐릭터의 이름을 바꾸듯이 인게임내에서 이름을 바꿀 수 있게 해보았다.
일단 UI를 만들어야 한다.
이 역시 캐릭터가 움직여도 고정되어야 하므로 Main Camera의 하위 항목으로 만들었다.
그 뒤 UI 이미지로 이름바꾸기 버튼을 만들고 버튼 컴포넌트를 달아줬다.
그리고 기존에 만들어뒀던 시작시 등장하는 팝업메뉴에서 텍스트를 입력받는 Input Field와 Join 버튼을 복사해와 ChangeNameMenu이라는 UI를 새로 만들었다
그 뒤 스크립트로 구현해야할 항목은
1. 이름바꾸기 버튼을 눌렀을때 ChangeNameMenu가 출력되게 하는 기능
2. 바꿀 이름을 입력하고 확인 버튼을 누르면 이름이 바뀌는 기능
이 두가지이다.
ChangeName이라는 C# 스크립트를 만들어, InputField(이름을 입력받는 곳)와 ChangeNameMenu(버튼을 눌렀을때 출력될 이름바꾸기 메뉴)를 지정해주었다.
그 뒤 OnClickChangeName 메서드를 생성해, ChangeNameMenu를 SetActive하게끔 해주었고,
OnClickAccept 메서드를 만들어 이름의 길이 조건을 충족했다면 확인버튼을 눌렀을때 이름이 바뀌게끔 해주었다.
그런데 이때 기존에 만들어두었던 GameManager의 SetCharacter는 GameManager에 저장해놓았던 CharacterType도 매개변수로 받는다.
내가 만들것은 이름만 바꾸는 기능이기에, SetName이라는 새로운 메서드를 만들어 이름만 받게끔 해주었다.
그리고 이름바꾸기버튼의 컴포넌트에 OnClickChangeName를, 확인버튼에는 OnClickAccept를 달아주었다.
정상적으로 작동하는 모습이다.
오늘의 회고
다른거보다 깃허브에 올릴때 애로사항이 많았다.
C# 과제할때는 cs 파일만 잘 올라가면 됐는데 유니티는 에셋 등 올라가야 할 것들이 꽤 있어서 그랬다.
그리고 gitignore의 위치가 어디여야할지 잘 모르던 상황이었어서 막혔었는데, 문제는 기존에 작업하던 파일들의 묶음인 프로젝트 폴더를 통째로 복사붙여넣기를 하다보니 gitignore가 제대로 적용이 안되던거였다.
복붙할 프로젝트 폴더안에 gitignore를 넣거나, 레퍼지토리를 만들때 gitignore를 만들고 프로젝트 폴더 내부의 요소들을 다 선택해서 레퍼지토리 폴더 내부에 복붙을 하면 되는거였다.
사실은 간단한거였는데 헤맸다..
그래도 이제 어떻게 하는지 제대로 알았다. 깃허브로 헷갈릴 일은 앞으로 없을거다!!
없어야한다..
내일은 나머지 선택구현 사항들을 구현해볼 생각이다.
내일은 팀프로젝트를 하는 날이었다..
내일도 화이팅!