상호작용이 불가능한 상태에서도 모달 UI가 나타나도록 변경

This commit is contained in:
2026-02-12 14:49:18 +09:00
parent 2bb4797ec5
commit b32cc925e3
5 changed files with 124 additions and 14 deletions

View File

@@ -9,6 +9,8 @@ namespace Northbound
[SerializeField] private GameObject modalPanel;
[SerializeField] private TextMeshProUGUI keyText;
[SerializeField] private TextMeshProUGUI interactText;
[SerializeField] private GameObject unavailablePanel;
[SerializeField] private TextMeshProUGUI unavailableText;
[Header("Settings")]
[SerializeField] private string defaultKey = "E";
@@ -27,6 +29,11 @@ namespace Northbound
{
modalPanel.SetActive(false);
}
if (unavailablePanel != null)
{
unavailablePanel.SetActive(false);
}
}
public void ShowModal(IInteractable interactable)
@@ -54,6 +61,11 @@ namespace Northbound
{
modalPanel.SetActive(false);
}
if (unavailablePanel != null)
{
unavailablePanel.SetActive(false);
}
}
public void UpdateModalContent()
@@ -86,5 +98,48 @@ namespace Northbound
return prompt;
}
/// <summary>
/// 상호작용 불가능 메시지를 표시합니다.
/// </summary>
/// <param name="interactable">상호작용 불가능한 대상</param>
public void ShowUnavailableMessage(IInteractable interactable)
{
if (interactable == null)
{
HideModal();
return;
}
if (unavailablePanel != null)
{
// unavailablePanel이 할당된 경우 전용 패널 사용
if (modalPanel != null)
{
modalPanel.SetActive(false);
}
unavailablePanel.SetActive(true);
if (unavailableText != null)
{
string prompt = interactable.GetInteractionPrompt();
unavailableText.text = ExtractInteractText(prompt);
}
}
else if (modalPanel != null && interactText != null)
{
// unavailablePanel이 없는 경우 modalPanel을 사용하여 불가능 메시지 표시
modalPanel.SetActive(true);
if (keyText != null)
{
keyText.text = "";
}
string prompt = interactable.GetInteractionPrompt();
interactText.text = ExtractInteractText(prompt);
}
}
}
}