1. Action
Action을 한마디로 설명하자면, 반환값이 없는 함수 포인터라고 할 수 있습니다.
Action은 Delegate처럼 함수를 대리자(변수)에 대입해서 사용할 수 있지만, 사용 방법이 훨신 간단하기 때문에
Delgate 대신에 반환 값이 존재하지 않으면Action을, 반환 값이 존재한다면 Func을 사용하는 경우가 많습니다.
- Action의 장점
Action을 사용하면 해당 Action의 대리자에 함수를 여러개를 추가할 수 있습니다. 이를 구독한다라고 합니다.
해당 대리자가 호출 될 경우 구독된 모든 함수들이 실행되기때문에 플레이어 사망, 생성과 같은 특정 이벤트가
발생했을 때 실행되야하는 함수들을 대리자에 전부 구독시켜 놓으면 다른 스크립트에서 복잡하게 참조하지 않아도
대리자만 호출하면 구독된 함수들이 전부 호출되기 때문에 훨씬 간편하게 관리 할 수 있습니다.
- Action 사용방법
public event Action<Vector2>으로 인자값으로 Vector2를 받는 OnMoveEvent라는 대리자를 선언해주었습니다.
이때 Action 앞에 event를 붙인 이유는 Action을 사용할 때는 선언한 곳에서만 호출하는 것이 원칙이기 때문입니다.
event를 붙이지 않을 경우 TopDownCharaacterController이 아닌 다른 곳에서 OnMoveEvent에 접근해 Action을 호출할 수 있기 때문입니다.
또한 대리자를 사용할때는 첫줄처럼 그냥 사용하는 것이 아닌 ?을 붙여 사용하는 것이 더 좋습니다.
?키워드의 의미는 해당 변수가 Null이 아닐경우에만 동작해라라는 의미입니다.
?키워드가 붙은 변수의 경우 그냥은 함수 호출을 할 수 없기때문에 .Invoke를 붙여서 CallmoveEvent 함수가 호출되면
OnMoveEvent가 호출되어 해당 대리자에 구독된 함수가 전부 실행되는 원리입니다.
대리자에 함수를 구독하는 방법은 위 코드처럼 += 연산자를 사용해 주시면 됩니다.
'Unity' 카테고리의 다른 글
Unity UnityEvent (0) | 2024.02.02 |
---|---|
Unity InputSystem (0) | 2024.01.31 |
#Unity[PhotonPun2] PhotonView, RPC (0) | 2024.01.22 |
Unity Animator Controller 변경, RectTransform (0) | 2024.01.19 |
Unity Photon 주요 기능들 (0) | 2024.01.18 |