오늘은 어제 만들었던 UI_Popup을 확장시켜보겠다!
public enum PopupButtonType
{
CONFIRM,
CANCEL,
OK,
NOTIFY,
}
private Callback callbackOk;
[SerializeField] private Image _popupBackgroundImage;
[SerializeField] private GameObject _contentTextObject;
[SerializeField] private GameObject _confirmButtonObject;
[SerializeField] private GameObject _cancelButtonObject;
[SerializeField] private GameObject _okButtonObject;
private TMP_Text _contentText;
private Button _confirmButton;
private Button _cancelButton;
private Button _okButton;
private void SetButtonActive(PopupButtonType buttonType)
{
switch (buttonType)
{
case PopupButtonType.CONFIRM:
case PopupButtonType.CANCEL:
_confirmButtonObject.SetActive(true);
_cancelButtonObject.SetActive(true);
_okButtonObject.SetActive(false);
break;
case PopupButtonType.OK:
_confirmButtonObject.SetActive(false);
_cancelButtonObject.SetActive(false);
_okButtonObject.SetActive(true);
break;
case PopupButtonType.NOTIFY:
_confirmButtonObject.SetActive(false);
_cancelButtonObject.SetActive(false);
_okButtonObject.SetActive(false);
break;
}
}
// 확인 버튼만 있는 팝업
public void ShowPopup(string content, string okButtonText, Callback OkAction)
{
SetPopupAttributes(PopupButtonType.OK);
SetButtonActive(PopupButtonType.OK);
_contentText.text = content;
_contentText.fontSize = DEFAULT_FONT_SIZE;
_okButtonText.text = okButtonText;
callbackOk = OkAction;
OpenUI();
}
// 버튼 없는 알림 팝업
public void ShowPopup(string content)
{
SetPopupAttributes(PopupButtonType.NOTIFY);
SetButtonActive(PopupButtonType.NOTIFY);
_contentText.text = content;
OpenUI();
CloseUIWithDelay();
}
private void CloseUIWithDelay()
{
Invoke("CloseUI", 1f);
}
// 팝업의 크기 및 텍스트 위치 조절 (알림 팝업일 경우와 그 외 경우)
private void SetPopupAttributes(PopupButtonType buttonType)
{
switch (buttonType)
{
case PopupButtonType.CONFIRM:
case PopupButtonType.CANCEL:
case PopupButtonType.OK:
_popupBackgroundImage.rectTransform.sizeDelta = new Vector2(DEFAULT_POPUP_WIDTH, DEFAULT_POPUP_HEIGHT);
_contentText.rectTransform.sizeDelta = new Vector2(DEFAULT_TEXT_WIDTH, DEFAULT_TEXT_HEIGHT);
_contentText.rectTransform.anchoredPosition = new Vector3(0, 35f, 0);
break;
case PopupButtonType.NOTIFY:
_popupBackgroundImage.rectTransform.sizeDelta = new Vector2(NOTIFICATION_POPUP_WIDTH, NOTIFICATION_POPUP_HEIGHT);
_contentText.rectTransform.sizeDelta = new Vector2(NOTIFICATION_TEXT_WIDTH, NOTIFICATION_TEXT_HEIGHT);
_contentText.rectTransform.anchoredPosition = new Vector3(0, -20f, 0);
break;
}
}
// 팝업 내용 텍스트 폰트 사이즈 조절
// ShowPopup 이후에 호출해야 함!
public void SetContextFontSize(int fontSize)
{
_contentText.fontSize = fontSize;
}
private UI_Popup _uiPopup;
private void Start()
{
_uiPopup = UIManager.Instance.GetUIComponent<UI_Popup>();
_uiPopup.ShowPopup("짜잔 알림 팝업이에용");
}
그럼 이렇게 알림 팝업이 짜잔
OK 팝업도 다음과 같이 잘 나온다!
오늘은 여기까지!!
끗!