Game Dev Study Log

by ricale

취미로 하는 게임 개발 공부

강의 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 생성.

  • 그리고 UnitUnitEnemy 가 공통으로 사용하는 클래스 UnitisEnemy 플래그 추가.
  • TurnSystem 에는 isPlayerTurn 플래그 추가.

End Turn 버튼 누르면 enemy 에게 턴이 넘어가고, 적 턴에는 특정 시간이 지난 후 턴을 넘기도록 구현. 적 AI 는 이후 강의에서 자세히 구현할 듯.