Unity

event, EventHandler 란?

CommitGuy 2025. 7. 28. 13:19

c#에서 eventEventHandler는 이벤트 기반 프로그래밍에서 사용되는 핵심 개념으로 주로 객체 간의 통신에서 사용되며 하나의 객체에서 어떤 일이 발생했을 때 다른 객체가 이를 감지하고 반응할 수 있게 해줌

 

 

event 란?

어떤 객체가 발생시키는 동작 또는 상황으로 그 동작이나 상황을 다른 클래스나 객체에 알리고자 하는 용도로 사용

ex] 버튼을 클릭했을 때

 

EventHandler 란?

이벤트가 발생될때마다 이벤트를 처리하기 위해 호출되는 메서드로 event 발생시 실행되는 함수

C#에서 자주 사용하는 이벤트 델리게이트(delegate) 형식

 

 

EventHandler 기본형태

public delegate void EventHandler(object sender, EventArgs e);

- sender: 이벤트를 발생시킨 객체

- EventArgs: 이벤트에 대한 추가 정보 (필요 없다면 EventArgs.Empty 사용)

 

커스텀 EventArgs를 사용한 기본 사용 예제

public event EventHandler<OnGridObjectChangedEventArgs> OnGridObjectChanged;
public class OnGridObjectChangedEventArgs: EventArgs
{
    public int x;
    public int y;
}

OnGridObjectChangedEventArgs라는 EventArgs를 상속받은 클래스를 만들어 해당 타입의 클래스를 인자로 받는 EventHandler OnGridObjectChanged 를 선언

OnGridObjectChanged += ShowDebugging;

private void ShowDebugging(object sender, OnGridObjectChangedEventArgs e)
{
    debugTextArray[e.x, e.y].text = gridArray[e.x, e.y]?.ToString();
}

ShowDebugging이라는 함수를 EventHandler에 등록 OnGridObjectChanged 이벤트 핸들러가 호출되면 ShowDebugging 함수가 호출

public void TriggerGridObjectChanged(int x, int y)
{
    if (OnGridObjectChanged != null)
    {
        OnGridObjectChanged(this, new OnGridObjectChangedEventArgs { x = x, y = y });
    }
}

OnGridObjectChanged 호출

 

전체코드

public event EventHandler<OnGridObjectChangedEventArgs> OnGridObjectChanged;
public class OnGridObjectChangedEventArgs: EventArgs
{
    public int x;
    public int y;
}

OnGridObjectChanged += ShowDebugging;

public void TriggerGridObjectChanged(int x, int y)
{
    if (OnGridObjectChanged != null)
    {
        OnGridObjectChanged(this, new OnGridObjectChangedEventArgs { x = x, y = y });
    }
}
    
private void ShowDebugging(object sender, OnGridObjectChangedEventArgs e)
{
    debugTextArray[e.x, e.y].text = gridArray[e.x, e.y]?.ToString();
}

 

반응형