Game Dev Study Log

by ricale

취미로 하는 게임 개발 공부

강의 35,36,37강 수강

강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding

35. Move Action (05:01~, 12:27)

어제 해결 못한 에러를 간신히 해결. GridDebugObject 가 prefab 이외에도 객체로 씬에 존재하고 있어서 생긴 문제였는데, 정확한 이유는 모르겠다. 여튼 해당 객체를 삭제해서 에러 해결.

이동과 관련된 구현을 별도의 스크립트로 나누고, 해당 스크립트에서 이동 가능한 GridPosition 을 값 검증 없이 디버깅 로그로 찍어보는 것까지 진행.

값 검증을 해서 유효한 GridPosition 을 뽑아서 실제로 GridPosition 으로 이동시키는 건 다음 강의에서 할 듯.

36. Move Action Validate (10:49)

유효한 GridPosition 을 찾아내는 코드를 작성. 유효한 GridPosition 이라 함은

  1. GridSystem 안에 위치하는지
  2. 지정된 범위 안에 위치하는지
  3. 현재 해당 Unit 이 머무르는 위치는 아닌 것인지
  4. 다른 Unit 이 머무르는 위치는 아닌 것인지.

를 체크하는 것.

LevelGrid, GridSystem, GridObject, GridPosition, Unit, UnitActionSystem, MoveAction 각 클래스의 역할과, 클래스를 분리하고 메서드를 만드는 컨벤션에 익숙해질 필요가 있어보인다.

37. Grid Visual (15:05)

Unit 의 이동 가능한 GridPosition 을 강조하는 UI 구현. 필요한 GridPosition 마다 동적으로 생성하는 게 가장 효율적이지만, 해당 구현은 다소 복잡하기 때문에 (성능 개선은 나중에 하기로 하고) 당장은 쉬운 방법으로 구현.

  • GridSystemVisualSingle 이라는 빈 객체 생성.
    • 해당 객체에 Quad 객체 생성
      • Mesh COllider 컴포넌트는 삭제
    • 텍스쳐를 강의 페이지에서 다운받아서 프로젝트에 추가하고
    • Material 을 새로 만들어서
      • 해당 Material 의 Subface Inputs - Base Map 으로 텍스쳐 지정
      • Surface Options - Surface Type 을 Transparent 로
    • 해당 Material 을 아까 만든 Quad 의 Mesh Renderer - Materials - Element 0 에 지정
    • 모양(회전,크기)은 Quad 객체에서 관리. 위치는 GridSystemVisualSingle 에서 관리
    • 해당 객체를 Prefabs 폴더에 드래그앤드랍 해서 Prefab 으로 만들자.

GridSystemVisual 이 현재 보여줘야할 grid UI 를 선택하고, 각 GridSystemVisualSingleShow/Hide 한다.

이번 강의에서는 단순히 UnitActionSystemselectedUnit 기준으로 움직일 수 있는 칸을 표시하게끔 했지만 이후 강의에서는 좀 더 많은 조건에 대응 가능하도록 한다.