게임개발/스터디

[스터디] 액션 Action 함수란?

감물 2024. 4. 15. 18:12

저번 시간에는 유니티 델리게이트 이벤트 함수에 대해서 배웠었다.

 

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이라는 타입을 만들어 놓은 거라고 보면 된다.

아까랑 똑같지만 코드가 한 줄 줄은 셈이다. 

 

 

https://www.inflearn.com/course/%EC%9C%A0%EB%8B%88%ED%8B%B0-%EA%B2%8C%EC%9E%84-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EC%97%90%EC%84%BC%EC%8A%A4/dashboard

 

레트로의 유니티 C# 게임 프로그래밍 에센스 | 이제민 - 인프런

이제민 | 모든 분야의 초심자를 대상으로, 유니티 C# 게임 프로그래밍을 직관적으로 설명합니다., 2019년 새로운 추가 콘텐츠(TPS 게임 제작)가 연재 완료 되었습니다. retr0의 유니티 게임 프로그래

www.inflearn.com