반응형
유니티에서 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 |