UnityAction은 Unity에서 사용되는 델리게이트(Delegate) 타입 중 하나로, 이벤트를 처리하는 데 사용됩니다. UnityAction은 메서드를 참조할 수 있는 대리자(delegate) 역할을 합니다.
예를 들어, 다음은 UnityAction을 사용하여 버튼 클릭 이벤트를 처리하는 코드입니다.
using UnityEngine;
using UnityEngine.UI;
public class ButtonExample : MonoBehaviour
{
public Button myButton;
void Start()
{
// 버튼 클릭 이벤트에 대한 UnityAction 생성
UnityAction myAction = new UnityAction(ButtonClicked);
// 버튼에 UnityAction 추가
myButton.onClick.AddListener(myAction);
}
// 버튼 클릭 이벤트 핸들러
void ButtonClicked()
{
Debug.Log("Button Clicked!");
}
}
위 코드에서 UnityAction myAction = new UnityAction(ButtonClicked)는 ButtonClicked 메서드를 참조하는 UnityAction을 생성합니다.
그리고 myButton.onClick.AddListener(myAction)은 myAction을 onClick 이벤트에 추가합니다.
이렇게 하면 버튼을 클릭할 때마다 ButtonClicked 메서드가 실행되며, "Button Clicked!"라는 로그가 출력됩니다.
또다른 예시로 아래는 UnityAction을 사용하여 버튼을 클릭할 때마다 캐릭터를 점프시키는 예시 코드입니다.
using UnityEngine;
using UnityEngine.UI;
public class JumpController : MonoBehaviour
{
// 캐릭터 점프력
public float jumpForce = 10f;
// Rigidbody 컴포넌트
private Rigidbody rb;
void Start()
{
// Rigidbody 컴포넌트 가져오기
rb = GetComponent<Rigidbody>();
// 버튼에 UnityAction 추가
Button jumpButton = GameObject.Find("JumpButton").GetComponent<Button>();
jumpButton.onClick.AddListener(Jump);
}
// 점프 처리 메서드
void Jump()
{
// 캐릭터에 점프력 적용
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
코드에서 UnityAction 자료형이 직접 사용되지는 않았지만, AddListener 메서드의 매개변수로 UnityAction을 전달하여 사용하고 있습니다.
AddListener 메서드는 이벤트를 처리하기 위해 등록된 메서드를 참조하는 델리게이트를 받아들입니다. 따라서 UnityAction을 사용하여 이벤트 처리 메서드를 등록할 수 있습니다.
즉, AddListener 메서드의 매개변수로 UnityAction을 전달하여 해당 이벤트가 발생할 때 실행될 메서드를 등록할 수 있습니다.
'유니티엔진 - 게임 공부' 카테고리의 다른 글
유니티 프로젝트 추가시 .ignore가 적용되지 않는 이유 (0) | 2024.03.26 |
---|---|
레트로의 유니티 게임 프로그래밍 에센스 - 유니런 게임으로 새롭게 배운 점(at Trigger and Collision) (0) | 2022.12.08 |