내일배움캠프 Unity 40일차 TIL - 팀 팀노션원본 - 발표 후기

Wooooo·2023년 12월 22일
0

내일배움캠프Unity

목록 보기
42/94

오늘의 키워드

폭풍같았던 한 주가 지나갔다. 배운 것도 정말 많았지만 내 생각보다 시간이 더 부족했었다.
결국 미완성인 체로 제출을 하게 됐는데, 나중에 짬 날때 완성을 해야봐야겠다.


미완성인 부분

  • GameOver : 플레이어가 죽으면 게임이 끝나야합니다
  • 패시브 아이템
  • 몬스터 사망 시 아이템 드랍
  • 보스몬스터 사망 시 보상 선택 UI가 나옵니다.
  • 보상 선택 시, 던전 구조를 변경하고 재시작합니다. (아이템 정보 유지)
  • 플레이어 무기 장착 시, 올바른 위치에 장착되게 변경

느낀 점

FSM을 구현하며 ,,

  • Generic을 이용해 callback들을 관리하는 Dictionary를 가진 FSM을 작성했는데, GenericDictionary 조합의 아름다움(?)을 느낄 수 있었다.
  • 다만, FSM의 각 상태를 class가 아닌, callback을 등록해서 호출하는 방식으로 구현하는 방법이 좋은 방법인지는 고민해봐야 할 문제 같다.
    • 각 상태를 class로 구현한다면, 상태 하나마다 클래스가 하나 씩 추가된다. 따라서 상태가 늘어날 수록 클래스의 개수도 늘어난다.
    • 내 방식은 상태가 늘어날 수록 FSM에 callback을 등록해줘야하기 때문에 FSM을 가지고 있는 클래스 자체의 메서드 개수가 많아지고 코드가 길어져 가독성이 떨어질 수 있다.

Coroutine을 이용한 비동기 생성 코드를 구현하며 ,,

  • 코드를 순차적으로 작성했어도 그 코드가 무조건 순차적으로 실행된다는 보장이 없다는 걸 알았다.
  • 게임 시작 시 랜덤으로 생성되는 던전의 생성을 기다렸다가, 던전에 알맞는 Navmesh를 생성해줘야헀다.
    • 따라서, Navmesh를 생성할 때 던전의 생성을 기다리기 위해 Coroutine을 사용했다.
    • DungeonGenerator 클래스에 IsDone이란 bool 프로퍼티를 추가하고, 던전 생성이 끝나면 프로퍼티를 true로 바꿔주게 했다.
    • NavmeshGenerator 클래스에선 CoroutineWaitWhile을 이용해 DungeonGeneratorIsDone이 true가 될 때까지 기다린 다음, Navmesh를 생성하게 했다.

AsyncOperator의 Complete를 사용하며 ,,

  • ResourceManagerNavmeshGenerator 등등 비동기 생성 시 반환되는 AsyncOperatorComplete callback을 이용해 데이터 로드, 객체 초기화, 인스턴스 생성과 같은 작업들의 순서를 체계적으로 설계할 수 있게 됐다.
profile
game developer

0개의 댓글