2025.03.05
강의 38,39강 수강
강의 수강: Unity Turn-Based Strategy Game: Intermediate C# Coding
38. Base Action Class (13:37)
테스트를 위해 SpinAction 을 추가, 유닛이 회전할 수 있는 함수 추가. MoveAction 도 움직이는 방향을 향해 유닛을 회전시키므로 두 액션이 충돌. 따라서 우리는 (어차피 턴베이스 게임이므로) 한번에 한 액션만 할 수 있게 해서 이 충돌을 막는다.
충돌을 막기 전에 코드를 정리한다. BaseAction 이라는 추상 부모 클래스를 만들어서 이 클래스에서 공통 로직을 관리하고 SpinAction 과 MoveAction 이 이 로직을 상속받게 한다.
아직 BaseAction 에 별 코드가 없기 한데, 이후 강의에서 점점 더 많아질 듯.
39. Single Active Action (11:50)
동시에 두 액션이 실행되는 걸 막기 위해 UnitActionSystem 에 플래그를 세우고, 각 액션에는 액션 성공 delegate (= 콜백) 를 전달해서 액션 시작/종료 시에 플래그 값을 변경하도록 한다.
delegate 를 직접 선언할 수도 있지만
public delegate void SpinCompleteDelegate();
private SpinCompleteDelegate onSpinComplete;
c# 에서 제공하는 delegate 클래스를 가져다 쓸 수도 있다.
using System;
private Action onSpinComplete;
onSpinComplete 도 onActionComplete 라고 이름 바꿔서 BaseAction 클래스에 일반화.