본문 바로가기
개발/기본) 기본기

C#) Event Handler 예시코드

by 테샤르 2024. 3. 25.

Event Handler 예시코드

어떤 기능을 구현할때 하나의 코드를 등록/해제하는 형태로 Event를 처리하는 방법으로 

간단하게 시간에 대한 처리를 하는데 해당 시간에 대한 처리가 여러가지 화면에서 같이 처리가 되어야하는 경우(오차가 없는 형태로 처리가 필요한 경우)에 유용하게 사용이 가능하다.

 

반응형

<예시코드>

using UnityEngine;
using System;

public class CustomEventArgs : EventArgs
{
    public TimeSpan EventTime { get; private set; }

    public CustomEventArgs(TimeSpan eventTime)
    {
        EventTime = eventTime;
    }
}

public class EventManager : MonoBehaviour
{
    // 이벤트 정의
    public event EventHandler<CustomEventArgs> OnMyEvent;

    void Start()
    {
        // 예시로 OnMyEvent에 이벤트 핸들러를 추가합니다.
        OnMyEvent += MyEventHandler;
    }

    void Update()
    {
        // 예시로 매 프레임마다 특정 조건을 체크하고 이벤트를 발생시킵니다.
        if (Input.GetKeyDown(KeyCode.Space))
        {
            TriggerEvent();
        }
    }

    void TriggerEvent()
    {
        // 등록된 이벤트 핸들러가 있다면 실행합니다.
        OnMyEvent?.Invoke(this, new CustomEventArgs(TimeSpan.FromSeconds(Time.time)));
    }

    void MyEventHandler(object sender, CustomEventArgs e)
    {
        Debug.Log("My event was triggered at time: " + e.EventTime);
        // 여기에 실행할 액션을 작성합니다.
    }
}

 

public class AnotherScript : MonoBehaviour
{
    void Start()
    {
        // EventManager에 있는 이벤트에 핸들러 추가
        FindObjectOfType<EventManager>().OnMyEvent += HandleMyEvent;
    }

    void HandleMyEvent(object sender, CustomEventArgs e)
    {
        Debug.Log("AnotherScript: My event was triggered at time: " + e.EventTime);
        // 여기에 추가적인 로직을 작성할 수 있습니다.
    }
}

 

 

C# EventHandler 대리자 : [링크]

 

EventHandler 대리자 (System)

이벤트 데이터가 없는 이벤트를 처리할 메서드를 나타냅니다.

learn.microsoft.com

 

★☆☆☆☆

 

반응형

댓글