장점: 성능이 가장 좋습니다. 코드상에서 구독(+=)과 해지(-=)가 명확하여 프로그래머가 로직 흐름을 완벽하게 제어할 수 있습니다.
단점: 인스펙터에 보이지 않으므로, 어떤 스크립트가 이 이벤트를 듣고 있는지 확인하려면 코드를 뒤져봐야 합니다(Visual Studio의 'Find All References' 등 활용).
형식: EventHandler는 관례적으로 (object sender, EventArgs e) 형태의 파라미터를 강제합니다. (최근에는 좀 더 간편한 System.Action을 더 많이 쓰는 추세입니다.)
using UnityEngine;
using System; // 필수
public class PlayerHealth : MonoBehaviour
{
// 인스펙터에 안 보임! 코드로만 연결 가능
public event EventHandler OnPlayerDied;
public void Die()
{
// 구독자가 있는지 확인(?.) 후 실행(Invoke)
// this: 이 이벤트를 보낸 사람, EventArgs.Empty: 추가 데이터 없음
OnPlayerDied?.Invoke(this, EventArgs.Empty);
}
}