[Unity C#] Action 과 Func

윤재학·2022년 6월 18일

유니티에는 델리게이트를 미리 구현해놓은 방법으로 쓸수있다.
Action 과 Func 이 존재하는데 사용을 하기 위해 using System을 입력 후 사용이 가능하다.
이둘의 차이점은 Func함수는 반환값이 있는 익명 함수고
Action함수는 반환값이 없는 익명 함수입니다. Func함수의 마지막은 반환값의 자료형입니다.

Action

namespace System
{      
    public delegate void Action();      
}

Action은 이런식으로 미리 델리게이트가 구현 되어있다.
사용법은 델리게이트를 쓰듯이 사용을 하면 된다.
장점으로는 델리게이트가 많아지면 Action등으로 대체를 하면 가독성이 올라가는 장점이 있다.

📕 Action의 사용예제

 public Action testDelChain;
 
 public void Progress(Action testAction)
 {
     testAction();      
 }
 public void FuncOne()
 {
     Debug.Log("테스트원");
 }
 public void FuncTwo()
 {
     Debug.Log("테스트투");
 }
 void Start()
 {
        testAction += FuncOne; 
        testAction += FuncTwo;
        Progress(testAction);
        testAction -= FuncOne;
        Progress(testAction);
 }


Func

namespace System
{
    public delegate TResult Func<in T1, in T2, out TResult>(T1 arg1, T2 arg2);
}

Func은 이렇게 구현이 되어있다. Func은 변수를 적고 마지막에 리턴을 어떤거로 할지 적어두는 식으로 사용할 수 있다.

📕 Func의 사용예제

 Func<int, int, string> myDelegate; // string 이 리턴 타입 
 void Start()
    {
     myDelegate = (int a, int b) => { int sum = a + b ; return sum + " 이 리턴 되었습니다."; };
           print(myDelegate(3, 5));
    }

람다식을 사용해 myDelegate를 리턴시켜준다. 이때 String 타입으로 리턴을 시켜줘야하므로 마지막 return에는 꼭 string을 붙여준다.

profile
노력하자 즐겁게 개발할수 있는 환경을 위해

0개의 댓글