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가 함께 들어가는 모습을 볼 수 있다. 그래서 버튼을 누르고 구매를 누르면 해당 정보가 팝업쪽으로 들어가게 되는 것이다.

 

배웠던 점

 

정보를 한 번에 전달할 수 있는데 이를 따로따로 생각하다보니 시간이 꽤나 걸린 것 같다. 구매버튼을 누를 때 같은 정보가 전달되어야 한다고 생각을 해서 꼬였는데 어차피 함께 움직이는 부분이다보니 정보를 같이 해도 되겠다는 생각이 들어서 이를 해결했다.