Unity/UIUX프로그래밍

0423_스크롤 상점 데이터 연동하기

minquu 2021. 4. 23. 17:15
반응형

먼저 스크롤을 만들어 줍니다.

 

스크롤을 만들어주고, 안에 있는 아이템을 프리팹을 해줍니다.

 

 

1. 데이터를 만들고, 데이터를 맵핑 해줄 클래스를 만들어줍니다.

 

 

2. DataManager(싱글턴)에서 데이터를 로드하는 메서드를 만들어줍니다.

 

관리를 해주는 딕셔너리를 만들고

 

데이터를 역직렬화 해주어서 딕셔너리에 넣어줍니다.

 

 

2.관리를 해주는 메인 스크립터를 만들어줍니다.

 

스크립터에서 변수를 만들어줍니다. 

 

shopItemPrefab; -> 만들어줄 프리팹

 

contents -> 프리팹을 넣어줄 컨턴츠

 

atlas -> 프리팹에 이미지를 바꿀 아틀라스

 

3. 관리해주는 곳에서 아이템을 넣기전에 아이템에 대한 클래스를 정의 해줍니다.

 

 

 

    public Image icon;
    public Text txtAmount;
    public Text txtCost;

 

변화가 있는 곳들의 변수를 퍼블릭으로 뚫어서 받아줍니다.

 

public void Init(Sprite sp, int amount, int cost) {
        this.icon.sprite = sp;
        this.icon.SetNativeSize();

        this.txtAmount.text = amount.ToString();
        this.txtCost.text = cost.ToString();
    }

 

Init으로 외부에서 값들을 받아서, 현재 변수에 값들을 변화 시켜줍니다 .

 

        this.icon.sprite = sp;

 

sp는 현재 아이콘의 스프라이트로 

 

        this.icon.SetNativeSize();

 

꼭 아이콘의 SetNativeSize 를 해줍시다.

 

 

 

4. 스프라이트를 아틀라스 화를 시켜줍니다.

 

아틀라스를 만들어줍니다.

 

 

 

5. 메인에서  아이템을 생성을 해줍니다.

 

 

 

 void Start()
    {
        //데이터 로드
        DataManager.GetInstance().LoadDatas();

        //리스트 아이템 생성
        foreach (var pair in DataManager.GetInstance().dicShopDatas) {
            var data = pair.Value;
            var go = Instantiate<GameObject>(this.shopItemPrefab, contents);
            var shopItem = go.GetComponent<UIShopItem>();
            var sp = this.atlas.GetSprite(data.sprite_name);
            shopItem.Init(sp, data.amount, data.cost);
        }
    }

 

 

  //데이터 로드
        DataManager.GetInstance().LoadDatas();

 

데이터를 데이터매니져에서 인스턴스해서 로드 해줍니다.

 

 //리스트 아이템 생성
        foreach (var pair in DataManager.GetInstance().dicShopDatas) {

foreach 문을 돌면서 pair에 딕셔너리를 넣어줍니다.

 

var data = pair.Value;

 

data 에 dic의 값들을 넣어줍니다.

 

 var go = Instantiate<GameObject>(this.shopItemPrefab, contents);

 

var go 에 인스턴스를 해줍니다. (프리팹, 경로) // 경로는 밑으로 들어갈 콘텐츠

 

var shopItem = go.GetComponent<UIShopItem>();

 

var shopItem은 현재 만들어진 프리팹에 UIShopItem 스크립터로 지정해줍니다.

 

var sp = this.atlas.GetSprite(data.sprite_name);

var sp 에 만들어준 아틀라스에서 스프라이트를 찾아오는데, 찾는 문자열은 dicdicShopDatas 딕셔너리에 들어있는 

 

즉, 데이터에 접근을 해서 받아옵니다. 

 

shopItem.Init(sp, data.amount, data.cost);

shopItem.Init 값에 필요한 값을 넣어줍니다. 

 

6. 필요한 곳에 어사인를 해줍니다 .

 

 

 

 

7. 작동을 해봅니다.

 

 

 

반응형