오늘 배운 내용
- 미니 프로젝트 후기
미니 프로젝트 후기
오늘은 팀 미니 프로젝트 제작을 마무리하고 시연 영상, 발표 준비를 하면서 프로젝트에 대한 후기를 작성 했다.
## 프로젝트를 통해 기술적으로 배운 내용
프로젝트를 진행했을때 첫날 먼저 프로그램 구조를 설계
하고 인터페이스
를 작성했는데
인터페이스를 맞춰놓고 작업을 해나가니 협업을 엄청 효율적으로 해 나갈수 있었다
프로젝트에서 UIEffectManager를 통해서 모든 효과들을 관리하고 그 하위 기능들은 각자 맡은 기능을 구현하기로
했는데 UIEffectManager에서 EffectInterface를 상속한 객체들을 List로 관리하면서 Update()마다
Run() 메소드를 실행 시켜주었다.
그래서 각자 맡은 기능의 클래스 구현할 떄는 Run() 메소드에서 결과를 return 하게만 클래스를 만들어주면
GameManager에서 UIEffectManager에게 원하는 기능을 원하는 타이밍에 호출만하면 UIEffectManager에서
해당기능을 알아서 처리해 주었고
그 결과 내가 맡은 GameManager에서는 게임 로직만 신경쓴 후 팀원들이 만들어준 기능들을
UIEffectManager에게 호출만하면 기능의 시작부터 끝까지 모두 UIEffectManager가 처리해주어
상세한 내용을 알지 못해도 간단하게 기능을 사용할 수 있었다.
이를 통해 인터페이스를 사용한 협업의 장점과 중요성에 대해서 깨달을 수 있었다.
협업을 위한 역할 분담
협업을 위해 구조를 설계하고 인터페이스를 정하기 위해서 다이어그램
을 사용했고
팀원들과 다이어그램을 공유하여 편집하면서 기능을 분할하고 각자 Manager 하나씩과
카드 생성 효과를 하나씩 맡고 추가로 남은 기능들을 배분하였다.
먼저 설계를 하고 코드를 작성하기 시작한것은 처음이였는데 이렇게 작업하니
나누어 작성한 코드를 합칠때 굉장히 간단하게 합칠수 있었다.
기억에 남는 문제 해결
수요일에 본격적으로 코드를 합치며 실제로 테스트를 진행했는데, GitHub에서 main branch를 pull할때마다
프로젝트가 정상적으로 작동하지 않다가 게임 오브젝트를 삭제 후 다시 생성하면 프로젝트가 정상적으로 작동되는 상황이 있었다.
도저히 이유를 찾지 못하다가 튜터님의 도움을 받게되었는데,
게임 오브젝트의 생성 순서
에 따라서 게임 오브젝트 들의 Start()문 실행 순서
가 달라져서 문제가 발생했다는 것
을 알게 되었고 Start()문에 있던 코드를 Awake()문으로 이동시키면서 문제를 해결할 수 있었다.
소감
처음 협업을 해보는거라 도대체 어떤식으로 역할분담을 하고 진행을 하는지 감도 안잡히고 막막했었는데
팀원분들이 잘 주도해주셔서 쉽게 따라갈수 있었습니다.
이번 경험을 바탕으로 다음에는 좀 더 원활하게 작업을 할 수 있을 것 같은 느낌이든다.