36 lines
1.6 KiB
C#
36 lines
1.6 KiB
C#
|
|
#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);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|