GameDevelop/Unity기초쌓기

Unity FSM: 왜 bool 대신 Func<bool>을 쓸까?

도도돋치 2025. 5. 27. 19:34
Contents 접기
728x90

기본 개념

EnemyTransitionConditions.cs 안에서 이런 코드가 나온다. 

이 코드를 공부해보았다.

public static Func<bool> PlayerInChaseRange(EnemyController e) =>
    () => Vector3.Distance(e.transform.position, e.Player.position) < e.Data.chasingRange;

 

 

1. EnemyController e란?

  • 그냥 적 하나를 가리키는 매개변수
  • 이 적의 위치(e.transform.position)와 플레이어 위치(e.Player.position)를 비교하는 용도

 

2. Func<bool>이란?

  • 실행하면 true/false를 돌려주는 작은 함수
  • 즉, “조건 검사 공식”을 함수로 만들어둔 것
Func<bool> condition = () => true;
if (condition()) Debug.Log("조건 만족!");

 

 

3. 왜 bool이 아니라 Func<bool>을 쓸까?

  • bool → 지금 즉시 한 번만 계산
  • Func<bool> → 조건 함수를 저장해두고 필요할 때마다 실행

FSM에서는 상태 전환 조건을 매 프레임마다 반복 확인해야 하므로,
Func<bool>로 만들어두면 관리하기 훨씬 편하다.

 

 

요약

  • EnemyController e → 검사할 적 객체
  • Func<bool> → 조건을 나중에도 계속 실행할 수 있는 함수
  • FSM에서는 Func<bool>이 적합 (전이 조건을 계속 체크 가능)
728x90