상호작용이 불가능한 상태에서도 모달 UI가 나타나도록 변경
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user