Sugar

[Unity] Event 2 - Action

by Sugar0810

※ Practical Environment

  • Unity Editor Version - 2021.3.11f1

 

 

※ Intro

Action

  • 입력, 리턴 값이 없는 델리게이트 타입

코딩을 하다보면 "리턴값이 void 이고 입력값이 없는 함수형"을 델리게이트로 사용할 일이 많습니다.

그래서 처음부터 이런 타입을 Using System 내부에 만들어 놓았는데 이것을 Action이라고 합니다.

즉 단순히 델리게이트를 편하게 사용하기 위한 단축키 라고 생각하시면 되겠네요.

 

 

※ Apply

1번째 방법(대리자)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System; // <--- Action 클래스를 사용하기 위해 필수 선언

public class Action : MonoBehaviour
{
    // delegate void Action(); --> 이 부분이 using System 내부에 구현되어 있습니다.
    Action work;

    void Start ()
    {
        // MoveBricks() 라고 하면 함수가 실행되는 것이므로 MoveBricks 라고 적습니다.
        work += MoveBricks;
        work += DigIn;
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
            work();
    }

    void MoveBricks()
    {
        Debug.Log("벽돌을 옮겼다.");
    }

    void DigIn()
    {
        Debug.Log("땅을 팠다.");
    }
}

2번째 방법(람다식) <--- 추천

using System // <--- 역시 Action 클래스를 사용하기 위해 필수 선언
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Target : MonoBehaviour // <--- 오리진 클래스에서 실행될 타겟 클래스
{
    public static Action target; // <--- 액션 클래스 필드 선언

    void Awake()
    {
        target = () => { }; // <--- 람다식 사용

        target = () =>
        {
            Mission();
            Text();
        };
    }

    public void Mission()
    {
        Debug.Log("미션 성공");
    }

    public void Text()
    {
        Debug.Log("여러 개도 가능~!");
    }
}

 

 

※ Reference Site

블로그의 정보

Sugar

Sugar0810

활동하기