Unity Chapter 8-4. C# 프로그래밍 [고급] : 액션

Date:     Updated:

카테고리:

태그:

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!


Chapter 8. C# 프로그래밍 : 고급


🔔 Action

Action : C#에서 미리 만들어져 제공하는 리턴 타입과 매개변수가 없는 함수의 등록을 위한 델리게이트.

  • 리턴 타입과 매개변수가 없는 함수는 아주 많기 때문에 C#에서 미리 만들어 지원하는 델리게이트다.
  • using System 해주어야 사용 가능하다.


일반적인 delegate를 사용한 경우

📜Worker.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

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 void Work()
    • 리턴도 하지 않고 (void) 매개변수도 없는 함수들을 등록받는 Work델리게이트 타입을 정의했다.
  • Work work
    • Work타입의 델리게이트인 work를 생성했다.
  • void Start()에서 함수들을 work에 등록해주고
  • void Update()에서 work();work를 실행한다.


Action을 사용한 경우

using System;

Action work;
  • Action을 사용하기 위해선 using System 해주어야 한다.
  • delegate 타입을 정의해주는 것 없이 바로 Action을 사용하여 delegte를 찍어낼 수 있다.
    • 리턴 타입이 없고(void) 매개변수가 없는 함수만 등록할 수 있다.

📜Worker.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;  // 👈

public class Worker : MonoBehaviour
{
    Action work; // 👈

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

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

    void Start()
    {
        work += MoveBricks;
        work += DigIn;
    }

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


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기


Unity Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기