저번 시간에는 유니티 델리게이트 이벤트 함수에 대해서 배웠었다.
public class Worker : MonoBehaviour
{
delegate void Work();
Work work;
void MoveBricks()
{
Debug.Log("벽돌을 옮겼다");
}
void DigIn()
{
Debug.Log("땅을 팠다");
}
void Start()
{
work += MoveBricks;
work += DigIn;
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Space))
work();
}
}
이런식으로 delegate Work라는 형을 만들어 놓고 그 형의 변수에 사용할 함수를 등록하는 식으로 해서 delegate를 사용한다고 배웠었다.
이번 시간에는 Action함수에 대해서 알아보자. Action은 C#에서 제공하는 미리 사용하기 쉽게 만들어진 delegate이다.
우리는 코드를 짤 때 인자도 없고 반환값도 없는 그런 함수를 자주 만들어서 사용하고 또 그러한 형태의 함수를 대행해주는 delegate를 굉장히 많이 작성하게 된다. 무슨 말이냐면 return도 없고 입력도 없는 형태의 함수를 대행하는 delegate를 작성할 일이 워낙 많으니까 아예 처음부터 그러한 형태의 delegate를 C# 내부에 type를 선언을 해 놓았다.
using System
public class Worker : MonoBehaviour
{
// delegate void Action()
Action work;
}
using System을 선언하게 되면 이 delegate 타입을 지우고 work란 delegate 타입을 Action이란 타입으로 대체할 수가 있다. 이 Action은 return값이 없고 입력값도 없는 delegate 타입이다. 즉 Action은 delegate void Action()와 같다. 즉, 리턴 값이 없고 입력이 없는 형태의 델리게이트를 사용할 일이 많으니까 미리 Action이라는 타입을 만들어 놓은 거라고 보면 된다.
아까랑 똑같지만 코드가 한 줄 줄은 셈이다.
레트로의 유니티 C# 게임 프로그래밍 에센스 | 이제민 - 인프런
이제민 | 모든 분야의 초심자를 대상으로, 유니티 C# 게임 프로그래밍을 직관적으로 설명합니다., 2019년 새로운 추가 콘텐츠(TPS 게임 제작)가 연재 완료 되었습니다. retr0의 유니티 게임 프로그래
www.inflearn.com
'게임개발 > 스터디' 카테고리의 다른 글
[스터디] 제네릭 Generic 이란? (0) | 2024.04.17 |
---|---|
[스터디] 람다 함수(익명 함수)란? (0) | 2024.04.16 |
[스터디] delegate 델리게이트란? (0) | 2024.04.13 |
[스터디] Enum값을 flag로 사용하기 (0) | 2024.04.12 |
[스터디] FSM 패턴과 사용해야 하는 이유 (0) | 2024.04.11 |