🐧 들어가기 앞서

오늘은 Unity Eduacation을 여러 개 듣고,

이전에 만들던 TopDownShooting 게임 강의를 새로 듣게 됐다.

또한 Event, Action에 대해 배울 수 있었다!


🐧 오늘 배운 것

  1. Observer
  2. Event
  3. Action
  4. Scriptable Object
  5. Obeject Pool

🐧 기억할 것 & 진행

Observer

옵저버 -> 관측자

무슨일이 벌어지고 있는지 지속적으로 체크하는 역할.
즉, 하나의 감시자를 통해 행동을 감시해서 처리하는 것을 옵저버 패턴이라고 한다.

옵저버에 미리 연락을 취함 -> 구독

구독을 한 함수에게만 행동을 알려준다.


Event

델리게이트의 한 종류다.

옵저버 패턴과 유사하게 활용할 수 있다.

기본 구조

delegate 반환형 델리게이트이름(매개변수)
델리게이트이름 변수이름;

event 구조

event 델리게이트이름 변수이름;

event는 구독 기반의 로직에 주로 이용된다.

간단하게,

  1. 이벤트를 등록해두면

  2. 필요한 함수들을 여기에 등록

  3. 이벤트 발생시 등록된 기능들을 전부 실행


예를 들어, 옵저버가 키보드를 감시하고 있다가,

키보드를 누르면, 옵저버가 이벤트에 등록된 함수들이 실행된다.

이벤트가 옵저버 역할을 한다.


What's the difference between delegate and event?

  • 델리게이트
  1. 델리게이트는 등록한 이벤트를 외부에서 실행할 수 있다.
  2. 델리게이트는 함수를 저장해서 실행하는게 본래 의미 (요청 / 처리)

    어떤 요청을 했을 때 그 결괄르 처리하는 것을 만들 수 있다.(콜백)

  • 이벤트
  1. 이벤트는 등록한 이벤트를 외부에서 실행할 수 없다.
  2. 이벤트는 예약해두고 필요할 때 해당 기능들을 실행 (구독 / 등록)

-> 캡슐화는 이벤트가 더 잘되어있다.


Action

-> C#에서 제공하는 내장 Delegate.

이벤트가 추가되면 델리게이트가 계속 늘어난다.

델리게이트를 매번 만들 필요 없이, Action 타입으로 만들어서 사용할 수 잇다.

매개변수로 넘긴느 부분은 Action뒤에 제네릭으로 추가

public delegate void MoveDelegateFunc(Vector2 moveVector);
public delegate void LookDelegateFunc(Vector2 lookVector);
public delegate void ShootDelegateFunc(bool fire);

public event MoveDelegateFunc OnMoveEvent;
public event LookDelegateFunc OnLookEvent;
public event ShootDelegateFunc OnFireEvent;

위 코드를 아래로 줄일 수 있다.

public event Action<Vector2> OnMoveEvent;
public event Action<Vector2> OnLookEvent;
public event Action<bool> OnFireEvent;

🐧 내일 할 일

알고리즘 정리

델리게이트 예문 제작

게임 강의 복습

0개의 댓글