Unity
상점 슬롯 버튼에서 팝업창으로 기능
박도치
2024. 1. 24. 22:33
문제
상점에서 아이템을 선택하고 그 아이템을 다시 한번 팝업으로 전달해주는 기능을 만드는 도중 이를 전달하지 못하는 문제가 생겼다.
포션을 클릭하면 해당 포션의 정보를 아래 알려주고 구매버튼을 눌렀을 때 새로 나오는 팝업에 다시 한번 정보를 전달해줘야 한다.
시도
시도했던 내용 중 하나는 단순하게 아이템을 배치할 때 팝업 정보도 같이 반복문을 돌렸던 점이다. 그러나 이런식으로 하면 가장 마지막에 들어간 스태미나 포션 (대) 만 출력되어서 문제가 생긴다.
해결
맞는 방식인지는 모르겠지만, 슬롯 아이템 즉, 포션을 눌렀을 때 이벤트에서 아래 정보만 전달해줬다면 새로운 함수를 만들어서 팝업에 정보도 같이 전달하게 해줬다.
쉽게 말해서 포션 아이템을 클릭하면 아래정보와 팝업정보 두 개가 같이 전달이 된다고 보면된다.
using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
using UnityEngine.UI;
public class ShopPotion : MonoBehaviour
{
[HideInInspector] public PotionSO potionSO;
public ShopPotionInfo shopPotionInfo;
public ShopPotionInfoPopup shopPotionInfoPopup;
public Image potionImage;
public Button buyButton;
private Button _slotButton;
void Start()
{
_slotButton = GetComponent<Button>();
}
public void Init(PotionSO data)
{
potionSO = data;
potionImage.sprite = data.sprite;
}
public void SetItemInfo()
{
_slotButton.onClick.RemoveAllListeners();
_slotButton.onClick.AddListener(() =>
{
shopPotionInfo.ShowItemInfo(potionSO);
shopPotionInfoPopup.ShowPopup(potionSO);
});
}
}
SetItemInfo에서 버튼 클릭 이벤트를 보면 itemInfo와 PopupInfo가 함께 들어가는 모습을 볼 수 있다. 그래서 버튼을 누르고 구매를 누르면 해당 정보가 팝업쪽으로 들어가게 되는 것이다.
배웠던 점
정보를 한 번에 전달할 수 있는데 이를 따로따로 생각하다보니 시간이 꽤나 걸린 것 같다. 구매버튼을 누를 때 같은 정보가 전달되어야 한다고 생각을 해서 꼬였는데 어차피 함께 움직이는 부분이다보니 정보를 같이 해도 되겠다는 생각이 들어서 이를 해결했다.