UIλ₯Ό μ μνλ€λ³΄λ νμ μ΄ νμνλ€.
κ²μμ μ’ λ£ν λ μ λ§ μ’ λ£ν κ²μΈμ§ 묻λ μ€κ° νμΈ λ¨κ³κ° νμνλ€.
λ°λΌμ Popupμ λ§λ€μλλ°,
ν리νΉμΌλ‘ λ§λ€μ΄λκ³ , ν μ€νΈλ μνλ μν©μ λ°λΌ κ΅μ²΄νκΈ° μν΄ μμ μ μ€μνλ€.
μ΄ ν΄λμ€λ μ¬μ¬μ© κ°λ₯ν νμ μ μ μνκΈ° μν΄ λ©μμ§μ μ‘μ μ μ€μ ν΄μ μ¬μ©νλ€.
SetMessage, SetYes/NoAction λ©μλλ₯Ό μ μν΄ λ€μν μν©μμ νμ μ λ΄μ©μ λ³κ²½ν μ μκ² μλνλ€.
using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class ConfirmationPopup : MonoBehaviour
{
[SerializeField] private TMP_Text messageTxt;
[SerializeField] private Button yesButton;
[SerializeField] private Button noButton;
public void SetMessage(string message)
{
messageTxt.text = message;
}
public void SetYesAction(Action yesAction)
{
yesButton.onClick.RemoveAllListeners();
yesButton.onClick.AddListener(new UnityEngine.Events.UnityAction(yesAction));
}
public void SetNoAction(Action noAction)
{
noButton.onClick.RemoveAllListeners();
noButton.onClick.AddListener(new UnityEngine.Events.UnityAction(noAction));
}
public void ClosePopup()
{
gameObject.SetActive(false);
}
}
νμ μ νμλ ν μ€νΈλ₯Ό κ΄λ¦¬νλ ν΄λμ€λ€. λ¬Έμμ΄ ν€λ₯Ό μ΄μ©ν΄ ν μ€νΈλ₯Ό μ μ₯νκ³ κ²μνλ λ°©μμ΄λ€.
μΆνμλ Localizationκ³Ό μ°λν΄ μΈμ΄κ° λ³κ²½λ λ κ΄λ¦¬νλ λ°©μμΌλ‘ λ³κ²½ν΄μΌνλ€.
using System.Collections.Generic;
public class PopupTexts
{
private Dictionary<string, string> popupTxts = new Dictionary<string, string>();
public PopupTexts()
{
popupTxts.Add("exitConfirmation", "μ λ§ λκ°μκ² μ΅λκΉ? νμ¬ μ§νν λ°μ΄ν°λ₯Ό λͺ¨λ μμ μ μμ΅λλ€.");
}
public string GetText(string key)
{
if(popupTxts.TryGetValue(key, out string value))
{
return value;
}
return "ν
μ€νΈ μμ";
}
}
νμ ν리νΉμ μμ±νλ μ½λλ₯Ό μΆκ°νλ€.
κΈ°μ‘΄μ μ¬μ©νλ UIManagerμμ κΈ°λ₯μ μΆκ°νλ€.
public void OpenConfirmationPopup(string message, Action yesAction)
{
ConfirmationPopup popup = OpenUI<ConfirmationPopup>();
popup.SetMessage(message);
popup.SetYesAction(yesAction);
popup.SetNoAction(popup.ClosePopup);
}
UIνμ μ λΆλ¬μ€κ³ , ν€λ₯Ό νΈμΆν΄ ν΄λΉνλ ν μ€νΈλ₯Ό κ°μ Έμ¬ μ μλλ‘ νλ€. λ§μ½, "μ" λ²νΌμ λλ₯΄λ©΄, () => λ€μ ν¨μκ° μ€νλλ€.
public void OnClickExitBtn()
{
PopupTexts popupTexts = new PopupTexts();
string exitConfirmationTxt = popupTexts.GetText("exitConfirmation");
UIManager.Instance.OpenConfirmationPopup(
exitConfirmationTxt,
() => LoadingSceneController.LoadScene("StartScene")
);
}
λ€λ§ κ³ λ―Όλλ λΆλΆμ μΈμ΄κ° λ³κ²½λ λ μ΄λ»κ² μ²λ¦¬λ₯Όν μ§?
κ°μ μ μ΄ λ³΄μ΄λλ°, UIPauseν΄λμ€(μΈλΆ ν΄λμ€)μμ PopupTextsμ μ μΈμ€ν΄μ€λ₯Ό λ§€λ² μμ±νκ³ μλ€.
μ΄λ νμ
μμ±μ ν
μ€νΈ λ°μ΄ν°λ₯Ό λ€μ λ‘λνκΈ° λ§λλλ°, μ΄ λΆλΆμ UIManagerλ μ€μνλ λ€λ₯Έ μ΄λ€ λ°©λ²μ μκ°ν΄λ΄μΌκ² λ€.
μ½λ μ¬μ¬μ© λ° λͺ¨λνκ° νμν κ² κ°λ€. νμ¬ κ΅¬μ‘°λ νμ μ΄ λ³λλ‘ κ΄λ¦¬λκ³ μλλ°(νμ λ«κΈ° λ²νΌ, μ λλ©μ΄μ ) μ΄ λΆλΆλ€μ μΆμνν΄μ λͺ¨λννλ©΄ λ ν¨μ¨μ μΈ νμ κ΄λ¦¬κ° λ κ² κ°λ€.
λ‘컬λΌμ΄μ μ΄μ 곡λΆνκΈ°.