2025.03.09
강의 47,48,49강 수강
강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding
47. Turn System (15:57)
TurnSystem, TurnSystemUI 를 추가해서 턴 종료 및 초기화 기능 구현.
이 과정에서 이벤트 리스너 실행 순서 이슈가 생길 수 있는 코드가 있어서, 해당 이슈 해결도 포함.
첫 번째 해결 방법은 Edit - Project Settings - Script Execution Order 메뉴를 사용해 스크립트의 초기화 순서를 강제하고, 그에 따른 이벤트 리스너 부착 순서를 강제해서 실행 순서가 정해지게 하는 방법.
당연하게도 이 방법은 사이드 이펙트를 일으킬 가능성도 높고 여러 리스너가 복잡하게 얽혀 있을 경우에는 근본적인 해결책이 될 수 업다.
다른 해결 방법은 이벤트 리스너를 더 추가해서 해결하는 방법인데, 턴이 종료되었을 때 뿐만 아니라 유닛의 액션 포인트가 바뀌었을 때에 대해서도 이벤트 리스너를 추가했다.
TurnSystem.Instance.OnTurnChanged += TurnSystem_OnTurnChanged;
Unit.OnAnyActionPointsChanged += Unit_OnAnyActionPointsChanged;
48. Intro - Enemies and Combat (00:59)
Enemies & Combat 섹션 소개.
49. Enemy (12:58)
기존 Unit Prefab 으로 Create - Prefab Variant 메뉴를 선택해 새로운 Prefab UnitEnemy 생성.
- 그리고
Unit과UnitEnemy가 공통으로 사용하는 클래스Unit에isEnemy플래그 추가. TurnSystem에는isPlayerTurn플래그 추가.
End Turn 버튼 누르면 enemy 에게 턴이 넘어가고, 적 턴에는 특정 시간이 지난 후 턴을 넘기도록 구현. 적 AI 는 이후 강의에서 자세히 구현할 듯.