toolbar 개발 중

This commit is contained in:
logonkhi
2025-06-16 19:30:01 +09:00
parent 2ffe7abac6
commit 63b71216cb
92 changed files with 5915 additions and 530 deletions

View File

@@ -37,10 +37,10 @@ namespace UVC.UI.Modal
/// ✨ 지정된 제목과 메시지로 알림창을 화면에 뿅! 하고 보여줘요.
/// 사용자가 "확인" 버튼을 누를 때까지 코드는 여기서 잠시 멈춰 기다려요.
/// </summary>
/// <param name="title">알림창 맨 위에 크게 보일 '제목'이에요.</param>
/// <param name="message">알림창에 보여줄 '메시지 내용'이에요.</param>
/// <param name="confirmButtonText">"확인" 버튼에 보여줄 글자예요. 아무것도 안 적으면 기본 글자("확인" 또는 설정된 언어)가 나와요.</param>
/// <param name="customPrefabPath">만약 특별히 만들어둔 알림창 디자인이 있다면, 그 파일 경로를 여기에 적어주세요. 없으면 기본 디자인을 사용해요.</param>
/// <param name="title">알림창 맨 위에 크게 보일 '제목'이에요. 다국어 키도 가능해요.</param>
/// <param name="message">알림창에 보여줄 '메시지 내용'이에요. 다국어 키도 가능해요.</param>
/// <param name="confirmButtonText">"확인" 버튼에 보여줄 글자예요. 아무것도 안 적으면 기본 글자("확인" 또는 설정된 언어)가 나와요. 다국어 키도 가능해요.</param>
/// <param name="customPrefabPath">만약 특별히 만들어둔 알림창 디자인이 있다면, 그 파일 경로를 여기에 적어주세요. 없으면 기본 디자인을 사용해요. 다국어 키도 가능해요.</param>
/// <returns>사용자가 확인 버튼을 누르면 완료되는 작업(UniTask)이에요. 특별한 값을 돌려주진 않아요.</returns>
/// <example>
/// <code>
@@ -61,6 +61,19 @@ namespace UVC.UI.Modal
/// await Alert.Show("저장 실패", "오류가 발생하여 저장하지 못했습니다.", "다시 시도");
/// // (다시 시도 로직 또는 다른 처리...)
/// }
///
/// // 예시: 퀘스트 완료 메시지를 현재 설정된 언어로 보여줍니다.
/// // titleLocalizationKey: "quest_completed_title" -> "퀘스트 완료" (한국어), "Quest Complete" (영어)
/// // messageLocalizationKey: "quest_completed_message" -> "{0} 퀘스트를 완료했습니다!" (한국어), "You have completed the {0} quest!" (영어)
/// // 여기서 {0} 부분은 실제 퀘스트 이름으로 바뀔 수 있도록 LocalizationManager에서 처리한다고 가정합니다.
///
/// string localizedQuestName = LocalizationManager.Instance.GetString(questNameKey); // 예: "main_quest_01" -> "첫 번째 임무"
/// string formattedMessageKey = "quest_completed_message"; // 실제로는 메시지 포맷팅이 필요할 수 있음
///
/// // 실제 메시지는 LocalizationManager에서 포맷팅을 지원해야 함
/// // 여기서는 간단히 키만 전달하는 것으로 가정
/// await Alert.Show("quest_completed_title", formattedMessageKey, confirmButtonLocalizationKey: "ui_button_great");
/// ULog.Debug("퀘스트 완료 알림을 플레이어가 확인했습니다.");
/// }
/// }
/// </code>
@@ -76,15 +89,15 @@ namespace UVC.UI.Modal
// ModalContent 레시피를 만들어요. 알림창은 취소 버튼이 필요 없으니 숨겨요.
ModalContent content = new ModalContent(prefabPath)
{
Title = title,
Message = message,
Title = LocalizationManager.Instance.GetString(title),
Message = LocalizationManager.Instance.GetString(message),
ShowCancelButton = false, // Alert에서는 취소 버튼 숨김
};
// 확인 버튼 글자를 따로 정해줬다면 그걸로 설정해요.
if (!string.IsNullOrEmpty(confirmButtonText))
{
content.ConfirmButtonText = confirmButtonText;
content.ConfirmButtonText = LocalizationManager.Instance.GetString(confirmButtonText);
}
// 아니면 ModalContent의 기본 설정(다국어 지원 "button_confirm" 키)을 따라요.
// 만약 다른 기본 키를 쓰고 싶다면 여기서 설정할 수도 있어요.
@@ -94,57 +107,5 @@ namespace UVC.UI.Modal
// Alert은 사용자의 선택 결과(true/false)가 중요하지 않으므로, bool 타입으로 받고 결과는 무시해요.
await Modal.Open<bool>(content);
}
/// <summary>
/// 🌍 다국어(여러 나라 언어)를 지원하는 알림창을 보여줘요.
/// 미리 준비된 '언어 키'를 알려주면, 게임 설정 언어에 맞는 글자를 자동으로 찾아서 보여줘요.
/// </summary>
/// <param name="titleLocalizationKey">제목에 사용할 '언어 키'예요. (예: "alert_title_welcome")</param>
/// <param name="messageLocalizationKey">메시지 내용에 사용할 '언어 키'예요. (예: "alert_message_item_acquired")</param>
/// <param name="confirmButtonLocalizationKey">확인 버튼 글자에 사용할 '언어 키'예요. 안 적으면 기본 키("button_confirm")를 사용해요.</param>
/// <param name="customPrefabPath">특별한 알림창 디자인 파일 경로예요. 없으면 기본 디자인을 사용해요.</param>
/// <returns>사용자가 확인 버튼을 누르면 완료되는 작업(UniTask)이에요.</returns>
/// <example>
/// <code>
/// public class QuestManager : MonoBehaviour
/// {
/// public async void OnQuestCompleted(string questNameKey)
/// {
/// // 예시: 퀘스트 완료 메시지를 현재 설정된 언어로 보여줍니다.
/// // titleLocalizationKey: "quest_completed_title" -> "퀘스트 완료" (한국어), "Quest Complete" (영어)
/// // messageLocalizationKey: "quest_completed_message" -> "{0} 퀘스트를 완료했습니다!" (한국어), "You have completed the {0} quest!" (영어)
/// // 여기서 {0} 부분은 실제 퀘스트 이름으로 바뀔 수 있도록 LocalizationManager에서 처리한다고 가정합니다.
///
/// string localizedQuestName = LocalizationManager.Instance.GetString(questNameKey); // 예: "main_quest_01" -> "첫 번째 임무"
/// string formattedMessageKey = "quest_completed_message"; // 실제로는 메시지 포맷팅이 필요할 수 있음
///
/// // 실제 메시지는 LocalizationManager에서 포맷팅을 지원해야 함
/// // 여기서는 간단히 키만 전달하는 것으로 가정
/// await Alert.ShowLocalized("quest_completed_title", formattedMessageKey, confirmButtonLocalizationKey: "ui_button_great");
/// ULog.Debug("퀘스트 완료 알림을 플레이어가 확인했습니다.");
/// }
/// }
/// </code>
/// </example>
public static async UniTask ShowLocalized(
string titleLocalizationKey,
string messageLocalizationKey,
string confirmButtonLocalizationKey = null,
string customPrefabPath = null)
{
// 언어 키를 사용해서 실제 보여줄 글자들을 가져와요.
string title = LocalizationManager.Instance.GetString(titleLocalizationKey);
string message = LocalizationManager.Instance.GetString(messageLocalizationKey);
string confirmText = null;
if (!string.IsNullOrEmpty(confirmButtonLocalizationKey))
{
confirmText = LocalizationManager.Instance.GetString(confirmButtonLocalizationKey);
}
// confirmText가 null (따로 안 정해줬으면)이면, Show() 메서드 안에서 ModalContent의 기본 글자 로직이 알아서 처리해줘요.
// 준비된 글자들로 알림창을 보여달라고 Show()에게 다시 부탁해요.
await Show(title, message, confirmText, customPrefabPath);
}
}
}