Files
EnglewoodLAB/Assets/Scripts/UVC/UI/Menu/ContextMenuTrigger.cs

36 lines
1.6 KiB
C#
Raw Permalink Normal View History

2026-01-20 11:27:56 +09:00
#nullable enable
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
namespace UVC.UI.Menu
{
/// <summary>
/// UI 요소에 붙여서 왼쪽 또는 오른쪽 클릭 시 컨텍스트 메뉴를 표시하는 역할을 합니다.
/// IPointerClickHandler 인터페이스를 구현하여 클릭 이벤트를 감지합니다.
/// </summary>
public class ContextMenuTrigger : MonoBehaviour, IPointerClickHandler
{
/// <summary>
/// 인스펙터에서 이 트리거에 연결할 메뉴 항목들을 설정합니다.
/// </summary>
[Tooltip("이 트리거가 표시할 컨텍스트 메뉴 항목 리스트입니다.")]
public List<ContextMenuItemData> menuItems = new List<ContextMenuItemData>();
/// <summary>
/// 포인터(마우스/터치)가 이 UI 요소 위에서 클릭되었을 때 호출됩니다.
/// </summary>
/// <param name="eventData">클릭 이벤트에 대한 데이터입니다.</param>
public void OnPointerClick(PointerEventData eventData)
{
// 왼쪽 클릭 또는 오른쪽 클릭 시 메뉴를 표시합니다.
if (eventData.button == PointerEventData.InputButton.Left || eventData.button == PointerEventData.InputButton.Right)
{
// ContextMenuManager 싱글톤 인스턴스를 통해 메뉴를 표시하도록 요청합니다.
// 메뉴 항목 데이터와 현재 마우스 위치를 전달합니다.
ContextMenuManager.Instance.ShowMenu(menuItems, eventData.position);
}
}
}
}