2025.03.16
강의 58,59,60강 수강
강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding
58. Enemy AI Basic (17:11)
UnitManager 스크립트를 추가해서 해당 스크립트에서 모든 Unit 을 갖고 있도록 구현.
- 이렇게 되면
UnitManager는 모든Unit의 생성보다 빠르게 초기화되어Unit의 생성 이벤트를 들을 수 있어야 하므로, Edit - Project Settings - Script Execution Order 에서 순서 조정이 필요하다.

이후 예전에 만들어 두었던, 턴이 돌아오면 일정 시간 이후 NextTurn 만 하게 작성해두었던 EnemyAI 스크립트를 수정한다.
- 턴이 왔을 때
UnitManager로부터 모든 적Unit목록을 가져온다. - 적
Unit목록을 순회하면서 액션이 가능한Unit들의 액션을 실행한다. - 모든 액션이 끝나면 NextTurn 으로 넘긴다.
이번 강의에서는 적 Unit 이 SpinAction 만 하게 구현했는데, 다음 강의에서 개선할 것으로 보인다.
59. Enemy AI Complex (18:22)
각 액션에 점수를 계산할 수 있는 로직을 넣고, 적 Unit 액션 실행 전 실행 가능한 액션들의 점수를 비교해 점수가 가장 높은 액션을 실행하게끔 구현.
점수를 관리하는 클래스 (지금 시점에서는 struct 로 작성해도 문제 없어보이는 클래스) EnemyAIAction 클래스를 만들어서 사용한다. 해당 클래스에는 gridPosition 과 점수 필드가 존재하는데, 이는 같은 액션이라 할지라도 어느 지점으로의 액션인지에 따라 점수가 다를 수 있기 때문.
- 예를 들어 moveAction 의 경우 적에게 가까이 가는 것이 멀리 가는 것 보다 점수가 높을 것이고, shootAction 의 경우 HP 가 적은 적을 노리는 게 점수가 높을 수 있다.
액션 관련한 비효율적인 코드가 몇몇 눈에 띄는데, 후속 강의에서 개선할 것으로 보인다.
60. Intro - Pathfinding (01:01)
Pathfinding 섹션에 대한 소개.
맵에 지나다닐 수 없는 지형지물 (예, 벽) 을 만들고, 그런 맵 위에서 적에게 접근할 수 있는 최적의 경로를 찾는 알고리즘을 적용한다고 한다.
맵을 구현하기 위해 GridSystem 에 대한 리팩토링이 필요하고, 이를 위한 c# generic 에 대해서도 간단히 알려준다고 한다.