프로그래밍/C#

Action

selinatsu 2024. 10. 12. 18:44
반응형

유니티에서 Action 사용하기

유니티에서 Action은 C#에서 기본 제공하는 제네릭 delegate 타입으로, 주로 콜백 함수를 전달할 때 사용됩니다. Action은 리턴값이 없고, 간단히 여러 작업을 한 곳에 모아놓고 특정 상황에서 호출하는 데 유용합니다.

코드의 가독성을 높이고 간결하게 유지하기 위해 많이 사용됩니다.

 

Action을 사용하는 경우

이벤트 기반 작업:

특정 이벤트가 발생했을 때 여러 작업을 한 번에 처리하고 싶을 때.

 

버튼 클릭 등 UI 작업:

버튼 클릭 시 여러 작업을 연결해 처리하고 싶을 때.

 

비동기 작업 후속 처리:

비동기 작업이 끝난 후 후속 작업을 등록하고 처리할 때.

 

예시: 플레이어가 적과 충돌했을 때 여러 작업을 처리하는 경우

using System;
using UnityEngine;

public class PlayerCollisionHandler : MonoBehaviour
{
    public Action onPlayerHit;

    void Start()
    {
        // 충돌 시 실행할 작업들을 Action에 등록
        onPlayerHit += TakeDamage;
        onPlayerHit += PlayHitSound;
        onPlayerHit += ShowHitEffect;
    }

    void OnCollisionEnter(Collision collision)
    {
        if (collision.gameObject.CompareTag("Enemy"))
        {
            // 플레이어가 적과 충돌했을 때 등록된 모든 작업 실행
            onPlayerHit?.Invoke();
        }
    }

    void TakeDamage()
    {
        Debug.Log("Player takes damage!");
    }

    void PlayHitSound()
    {
        Debug.Log("Playing hit sound!");
    }

    void ShowHitEffect()
    {
        Debug.Log("Showing hit effect!");
    }
}

 

이 예시에서 onPlayerHit는 플레이어가 적과 충돌했을 때 실행할 여러 작업을 담고 있는 Action입니다.
Action을 사용하면 여러 작업을 하나의 변수에 등록하여 관리할 수 있고, 충돌 이벤트가 발생했을 때 한 번에 호출할 수 있습니다.

 

Action 사용의 장점

간결성:

delegate를 직접 정의하지 않고도 Action을 사용하면 간단하게 콜백을 전달할 수 있습니다.

 

가독성:

코드가 직관적이고 읽기 쉽게 만들어 줍니다.

 

유연성:

상황에 따라 여러 함수를 동적으로 추가하거나 제거할 수 있습니다.

 

이와 같이 Action은 유니티에서 간단한 콜백 처리를 해야 할 때 유용하게 사용할 수 있으며, 이벤트 기반 작업에서 특히 편리하게 활용됩니다.

 

 

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

static 선언  (0) 2024.10.13
event 그리고 delegate, Action  (0) 2024.10.12
Callback  (1) 2024.10.12
event 와 delegate  (0) 2024.10.12
delegate  (1) 2024.10.12